Meta-configuration of profiles

ABSTRACT

Disclosed are methods for creating, applying, using and retrieving profile information that includes attributes that may be stored separately from, or with, the content to which the profiles are being applied. In this manner, profiles can be shared in various environments and across various applications. Attributes that have corresponding attributes in other content can be applied to the other content, as long as each of the attributes is valid. In computer aided design applications, the profile can be stored in a profile repository embedded within the CAD model. In addition, profile controllers are disclosed which control the attributes of a profile that can be used with selected content and other content and send a notification that a profile is available for use by other content.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a divisional application of U.S. patent applicationSer. No. 12/972,876, filed Dec. 20, 2010, entitled “Meta-Configurationof Profiles,” which application is a continuation of U.S. applicationSer. No. 11/753,476, filed May 24, 2007, entitled “Meta-Configuration ofProfiles,” which application is based upon and claims priority to U.S.provisional Application Ser. No. 60/803,306, filed May 26, 2006,entitled “Meta-Configuration of Profiles,” and U.S. provisionalApplication Ser. No. 60/820,870, filed Jul. 31, 2006, entitled“Meta-Configuration of Profiles.” The entire disclosures of allabove-mentioned applications are herein specifically incorporated byreference for all that they disclose and teach.

BACKGROUND OF THE INVENTION

The use of profiles is a convenient way to save time in performingvarious types of tasks. Default profiles provide desired preferences inadvance for many different types of activities. For example, MicrosoftWord may store a default profile such that when a new document isopened, the document uses 12 point type of a particular font such asTimes Roman. As another example, profile buttons may be provided in anautomobile that set the height, position and attitude of a car seat forseveral different drivers. Further, the default display in a computeraided design drawing application illustrates the devices being displayedin accordance with a default view. Each of these examples, as well asmany other examples, constitutes profiles that can conform to a user'spreferences or a default profile.

SUMMARY OF THE INVENTION

The present invention may therefore comprise a method of retrieving aprofile that has a plurality of attributes and applying the profile toselected content comprising: defining the selected content to which theprofile is to be applied; determining if the content includes aninstruction to use the profile; retrieving the profile from a profilerepository that is separate from and not embedded with the content;accessing the profile repository to load the profile; loading theprofile from the profile repository; setting a current attribute pointerto a current attribute in the profile; applying the current attribute tothe content; incrementing the current attribute pointer so that allattributes of the plurality of attributes in the profile are applied tothe selected content.

The present invention may further comprise a method of applying aprofile that has a plurality of attributes to selected contentcomprising: defining the selected content to which the profile is to beapplied; setting a current attribute pointer to a current attribute ofthe plurality of attributes; applying the current attribute to theselected content when the current attribute has a correspondingattribute present in the selected content, and when the currentattribute is valid for the content; incrementing the current attributepointer so that the plurality of attributes in the profile are appliedto the selected content whenever the attributes have a correspondingattribute present in the selected content, and when each attribute isvalid for the selected content.

The present invention may further comprise a method of creating aprofile for a Computer-Aided Design (CAD) application comprising:configuring attributes of the profile of the CAD application by applyingthe attributes to selected content of a CAD model for use with the CADapplication; accessing a plurality of categories and subcategories ofthe attributes; selecting the attributes from the categories andsubcategories to form the profile; applying a unique identifier to theprofile; storing the profile in a profile repository embedded within thecontent of the CAD model.

The present invention may further comprise a method of using a profilecontroller to control the attributes of a profile to be used withselected content and other content comprising: accessing a plurality ofcategories and subcategories of the attributes; selecting the attributesfrom the categories and subcategories to form the profile; assigning aunique identifier to the profile; storing the profile in a profilerepository for use with the selected content; retrieving the profilefrom the profile repository using the unique identifier; applying theprofile to the selected content; sending a notification that the profileis available for use by the other content; allowing access to theprofile by the other content.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1A is a flow diagram illustrating a process for creating a newprofile.

FIG. 1B is a diagram illustrating the linking of profile types withprofiles.

FIG. 1C is a diagram illustrating an embodiment of a process that mightbe followed by a profile controller.

FIG. 2 is a flow diagram illustrating a process for recalling theprofile by selecting the content.

FIG. 3 is a flow diagram illustrating a process for recalling theprofile by selecting the profile.

FIG. 4 is a flow diagram illustrating a process for creating a newprofile for multiple views in a single document.

FIG. 5 is a flow diagram illustrating a process for creating a newprofile for multiple documents in a single application.

FIG. 6 is a flow diagram illustrating a process for creating a newprofile for multiple documents in multiple applications.

FIG. 7 is a flow diagram illustrating an embodiment of a process forcreating a new profile for video media.

FIG. 8 is a flow diagram illustrating an embodiment of a process forrecalling a video playback profile by selecting a video file.

FIG. 9 is a flow diagram illustrating an embodiment of a process forrecalling a video playback profile by selecting a profile.

FIG. 10 is a flow diagram of an embodiment of a process for creating anew profile for an automobile.

FIG. 11 is a flow diagram of an embodiment of a process for creating anew profile for 3-D CAD objects.

FIG. 12 is a flow diagram of an embodiment of a process for calling aprofile by selecting CAD content.

FIG. 13 is a flow diagram of an embodiment of a process for recalling aprofile by selecting the profile.

FIG. 14 is a flow diagram of an embodiment of a process for applying aprofile from another source.

FIG. 15 is a flow diagram of an embodiment for creating a new profilefrom an operating system desktop configuration.

FIG. 16A is a flow diagram of an embodiment for defining and storingprofiles using an intermediate user interface.

FIG. 16B is a detailed view of an intermediate user interface.

FIG. 17 is a flow diagram of an embodiment for recalling profiles usingan intermediate user interface.

FIG. 18 is a flow diagram of an embodiment for clearing profiles usingan intermediate user interface.

FIG. 19 is a flow diagram of an embodiment for loading profiles into anintermediate user interface.

FIG. 20A is a flow diagram of an embodiment for working with multiplesets of profiles using an enhanced intermediate user interface.

FIG. 20B is a detailed view of an enhanced intermediate user interface.

FIG. 21 is a flow diagram of an embodiment for recalling and applyingmultiple sets of data using an enhanced intermediate user interface.

FIG. 22 is a schematic diagram of a system for connecting to profileservers.

FIG. 23 is a schematic diagram of a multi-source profile.

DETAILED DESCRIPTION OF EMBODIMENTS OF THE INVENTION

FIG. 1A is a flow diagram of an embodiment of an overall process forcreating a profile. At step 102, the content to which the profile willbe applied is created or obtained from another source. For example, theuser may wish to create a profile for a document such as a Worddocument. In that case, the user may create the Word document orretrieve a Word document from a source. Alternatively, it may bedesirable to create a profile for a set of CAD drawings. The content ofthe CAD drawings may be created by the user or obtained from anothersource. At step 104, the user chooses or configures the desiredattributes of the content. The attributes are the settings for itemssuch as format, style, position, etc. for which settings are chosen bythe user for the particular content. For example, in a Word document,the attributes may be the settings for font, font size, spacing, etc. Ina CAD drawing, attributes may be the settings for the views, lighting,size, etc.

After step 104 is completed, the process can proceed either to step 106or to step 110. If the process proceeds to step 106, the content isselected from which a profile is created. In other words, the user canselect the content that is going to be used to create a profile. In theexample of a Word document, the user may select one or more paragraphsof the document, or in a CAD drawing one or more objects of the CADdrawing. Also, the user may have the option “select all.” The processthen proceeds to step 108 where the user requests the controller todefine a profile. In other words, the controller or processor of thesystem initiates the process for defining a profile at step 108.

Alternatively, after step 104, the process can proceed to step 110 wherethe user first requests the controller to define a profile. The processthen proceeds to step 112 where the content is selected from which aprofile is to be created. If the user desires to create a genericprofile without selecting specific content, the user may effectivelyskip step 112 by not selecting any content. After step 108, or step 112,the process can optionally proceed to step 114 where the user selects aname for the profile and optionally provides a description of thatprofile. For example, if a user desires to select a profile for anautomobile, such as seat settings, audio settings, engine performancesettings, climate control settings, etc., the user may wish to use hisor her name as the profile name. The process of selecting a name inaccordance with step 114 can be performed at this point, or optionallycan be performed at step 124, as disclosed below. In other words, theprocess can proceed directly to step 116 and selection of the name canoccur at step 124.

The process then proceeds to step 116 where the user selects attributesof the content to be stored for future use. The attributes are thesettings of the items that form the profile. For example, in a profilefor an automobile, the attributes may include seat position, lumbarposition, back rest tilt, seat height, audio volume, audio presets,climate control temperature, engine performance parameters, etc. For aWord document, the attributes may include the font, font size, linespacing, paragraph spacing, centering features, paragraph layout, etc.For a CAD drawing, the attributes may include the view, lighting,transparency, part color, wire frame, etc. For a computer desktop, theattributes may include open applications and their window sizes andassociated open documents (including position within the document),power settings, screen resolutions, audio volume, etc.

One implementation of the process of selecting attributes in accordancewith step 116 may be to display a series of categories and subcategoriesas menu check boxes which allow the user to check or uncheck each one ofthe attributes that is going to be saved as part of the profile. Forexample, in an automobile, the user may check an “audio” box category,which brings up subcategories as additional check boxes such as “PresetButtons” and “Volume”. The user can select “Preset Buttons,” andadditional check boxes may be displayed for the individual radio presetbuttons, which allow selection of a particular frequency (radio station)for each of the preset buttons. Of course, a “select all” or “deselectall” option can be provided with the check list. In addition, the usermay generate groups which can be a collection of attributes which may ormay not be related. For example, a group may include the presets forbuttons 1, 2 and 3 for the radio. Another group may include the presetsfor buttons 4, 5 and 6 of the radio. A third group may include all ofthe radio presets plus the climate control settings. The groups can beused to populate a profile in a simple and easy manner by importing thesettings for the groups into a new profile. This aids the user inreducing the time required to populate a new profile. These groups andthe profiles within the groups can be defined by the user and/orspecified by the system (i.e. company-wide definitions, etc.) to greatlysimplify configuration. For example, in the case of a Word document, ifthe user wants to define a set of profiles containing specific textformatting attributes such as font, size, line spacing, characteradjustment setting, etc., the user may define a group containing thedesired items and whether each item should be included or excluded, aswell as (optionally) the settings of the items (attributes),(effectively creating a profile that can be used to define otherprofiles). Further, a profile can contain links to one or moreadditional profiles, along with information regarding which portion orportions of this linked profile data should be included and/or ignored,to provide further flexibility. For example, as illustrated in FIG. 1B,profile (P3) 154 may have its own data, and also has links to profiles(P4) 160 and (P5) 161. This allows profile (P3) 154 to have a simplerdefinition, as profile (P3) 154 will automatically include either thefull profile information or a subset thereof (per user preference andconfiguration information) from profiles (P4) 160 and (P5) 161. Then,when defining the new profile or recalling an existing profile, ratherthan having to manually specify which attributes to include and/orexclude, the user can simply specify the group created above, and allsettings will be automatically adjusted as specified in the group. Ifthe user has chosen to link the current profile to one or moreadditional profiles, the current settings will be adjusted as if theprofile information from the additional profile(s) were directlyincluded in the current profile. The user, when specifying the group orprofile, can optionally select, for example, “turn all in group ON” or“turn all in group OFF” (as well as other options) instead of simplyapplying the settings stored in the group, thereby further increasingthe flexibility of the selection operation. These groups can be used inboth storage and recall of profiles. Just as a profile definition may besimplified using groups, a profile definition may be very simple byallowing it to contain data from other profiles, as copies of the dataand/or as links to the data to further simplify its definition. In fact,a profile definition may consist entirely of links to other profiles,the information of which will be processed as appropriate.

The process of FIG. 1A then optionally proceeds to step 118. At step118, profile types are defined or specified by the user. For example, asillustrated in FIG. 1B, the user or multiple users may have multipleprofiles defined in the system such as a first profile (P1) 152, secondprofile (P2) 153 and a third profile (P3) 154. The user may then wish tolink a first type (T1) 156, which may be an audio profile type withprofiles (P1) 152 and (P2) 153, since both profiles (P1) 152 and (P2)153 include audio categories. However, the user can associate or linkthe first profile type (T1) 157 with any particular profile, even thoughthat profile may not include audio attributes. It is strictly up to theuser how the profile types will be linked to the particular profiles.For example, the user may link the comfort-related profile type (T2) 158to climate control, seat position and audio profiles. Profile type (T3)159, that relates to engine performance, is linked to profile (P1) 152and profile (P3) 154 that both include performance attributes. Eachprofile may have multiple types. For example, a single profile couldbelong to both the “comfort” type and the “performance” type. Theadvantage of providing profile types is that the user may sort and/orfilter the list of available profiles by type, thereby simplifying theselection process (such as showing only profiles that are flagged as“comfort” profiles). For example, if the user chooses to show only aparticular profile type, such as the second profile type (T2) 158, whichis a comfort profile type, the user will see only the profiles that areassociated with that particular profile type so that during recall, asdisclosed in FIG. 2, the user can more easily choose the desired profileto recall. The names of each of the profile types can be selected by theuser and/or predefined names can be provided for the profile types.Groups (G1) 155 and (G2) 156 are also illustrated in FIG. 1B. Asexplained above, groups can include any desired collection of attributesand can be used to quickly and easily populate profiles.

Referring again to FIG. 1A, the process then proceeds to step 120 wherethe process of saving the profile that is defined by the chosenattributes is initiated. At step 122, it is determined by the controllerwhether a name for the profile, and optionally a description of theprofile, have been selected at step 114. If not, the user selects theprofile name and optionally a description of the profile at step 124.

The process of FIG. 1A then proceeds to step 126 for selection of thestorage type or types for the profile. As disclosed in step 126,profiles can be stored internally in one or more files that the user isaccessing, externally in a separate file, and/or externally in adatabase. For example, if the user generates profiles for a Worddocument, the profiles can be stored internally in the file of the Worddocument. Further, the user can store the profiles in another file thatmay be associated with the Word document. Still further, the user canstore the profiles in an external database. External databases caninclude any desired type of volatile or non-volatile memory includingRAM, USB plug-ins, flash media, memory cards, hard drives, removablehard drives, network storage (NAS, SAN, etc.), zip drives, an actualdatabase or data management application, etc., that can be accessedeither locally or over a wired or wireless network including LANs, WANs,the internet, etc. An identifier can be assigned to the profile so thatwhen a particular file is opened, the file can identify and access theprofile data that is stored in another file or in an external database.In the example of an automobile profile, the profiles may be stored in aplug-in USB drive. The user can simply plug the USB drive into a USBport in the automobile to provide the automobile with the user'sprofiles. Alternatively and/or additionally, a touch screen and/or anyother interface or combination of interfaces, including keyboard,mouse/touchpad, audio, voice, SMS, text message, email, etc., may beprovided in the automobile that allows the user to select his or hername that includes the stored profiles in a file associated with theuser's name. These profiles can be stored on the hard drive or othernon-volatile memory in the automobile computer for access by a number ofdifferent users. Profiles that are stored in external databases can alsobe accessed over a wired or wireless communication link or network suchas a local area network, a wide area network or the Internet. Forexample, a user may prefer a certain font, line spacing, paragraphspacing, margins, centering and other layout parameters for a particularWord document. If the user creating the Word document, for example,desires to apply the same profiles, the user can access the profilesfrom another file over a network, download those profiles, and applythose profiles to the new Word document. Of course, the same principlesapply to other uses of the disclosed system such as CAD drawings andother applications of the system. For example, profiles for a particulardriver may be wirelessly downloaded in an automobile from an externaldatabase that is connected to a network.

Further, storage and usage of the profiles can be either static ordynamic. For static profiles, the user must manually update the profileif changes are made, and must also manually update any documents, etc.that use the profile information. For example, if a user is working on adocument and has stored a profile in an external database with a staticlink, and the user modifies the controlling or defining aspects of theprofile, the user must manually update the stored profile. Further, ifanother user modifies this stored profile, the initial user's documentwill only be reformatted or changed in accordance with the updatedprofile information if the initial user reloads the profile data. Incontrast, dynamic storage may automatically update or change the storedprofile(s) (with or without prompting the user, depending onconfiguration options) if a change is made to the controlling ordefining aspects of the profile. Additionally, if a stored profile ismodified, the dynamically linked profile may automatically update linkeddocuments, etc. that use the profile information, or may prompt the useras to whether the user would like to apply the new profile informationto the current document, etc. For example, if a user is working on adocument and has stored a profile in an external database with a dynamiclink, and another user modifies this profile, the initial user'sdocument may be automatically updated with the new formatting, etc.included in the updated profile, or the user may be prompted as towhether the user would like to apply the new profile information to thecurrent document. When the user is prompted whether to apply the newprofile information, the system may provide a “preview” of the changesto enable the user to see what will occur before the changes areactually applied. Also, when a dynamic link is in use, the optionregarding whether the user will be prompted to apply the new profile, aswell as other preferences, including the option to ignore all changes tolinked profiles, can be set as a user-level preference, as asystem-level preference, and/or as one or more other levels ofpreference, depending on the behavior and level of flexibility desired.

FIG. 1C illustrates an embodiment of a process 170 that could be used bya profile controller to handle dynamic links, as described above. Instep 171, the profile controller receives a request from a client tostore a profile. The process then proceeds to step 172, in which theprofile controller negotiates with the client to determine what profileneeds to be stored and receives the current profile data from theclient. This negotiation may include assigning a unique ID, if needed,to the profile, as well as other data manipulations and assignments. Theprocess then proceeds to step 173. At step 173, the profile controllerdetermines whether the current profile has been previously stored, andif so, if its existing profile data is to be archived. One reason forarchiving profile data is to enable the user to restore a previouslyused profile. If the current profile has not been previously stored, orif the existing profile data is not to be archived, the process proceedsdirectly to step 175. If the existing profile data is to be archived,the process proceeds to step 174, where the profile controller archivesthe existing data for the current profile. This archival process cantake many forms, including differential backup, compression, encryptionand/or any other method for storing data. The process then proceeds tostep 175. At step 175, the profile controller stores the current profiledata as specified and provided by the client. Any method of storage maybe used, and may include encryption, compression, etc., and the data maybe stored in any appropriate location. The process then proceeds to step176. In step 176, the profile controller sends a message indicating thatan updated profile is available. This message may be sent for newprofiles as well. This message may be a system-wide broadcast message ormay be targeted to specific clients, and may be sent to local and/orremote destinations (such as over a network or the Internet). In thecase of a broadcast message, the receiver can be configured to receivesuch messages, such as by “subscribing” to them. The receivers of thesemessages may be clients such as the one that initiated the request tostore the profile, and may also include other profile controllers, whichmay be located remotely, thus enabling a distributed, redundant systemof profile controllers. The “profile updated” message may include theprofile's unique ID and current revision, as well as other information(including the complete profile, if desired). The receiver of themessage will then determine the appropriate action, if any, to be taken.The process of FIG. 1C then proceeds to step 177 and ends.

The process of FIG. 1A then proceeds to step 128. At step 128, the useris prompted to cancel the storage of the profile or accept the profilefor storage. If it is determined at step 128 to cancel the storage of aprofile (for example, if the user desires to start over), the processproceeds directly to step 150. If not, the process proceeds to step 132.At step 132, it is determined whether the profile should be set as thedefault profile. If the profile should not be set as the defaultprofile, the process then proceeds directly to step 130. If the profileis to be set as the default profile, the process proceeds to step 134 toflag the profile as the default profile. This indicator of which profileis the default profile may be stored with the content. If a defaultprofile is already defined, the user may (optionally, depending onconfiguration options) be prompted to confirm that the new profileshould become the default profile, in which case the profile that waspreviously the default profile will no longer be the default profile.The process then proceeds to step 130, where the system determines,based upon the instructions provided at step 126, whether to store theprofile internally to a particular file. The process then proceeds tostep 136. At step 136, the documents or objects to which the profilewill be stored are selected. With respect to specific objects, such asobjects in a CAD drawing, one or more profiles can be associated withvarious objects in the data files, just as one or more profiles may bestored within each document or object. If the profile already existswithin the documents or objects, the user may be prompted as to whetherthe existing profile should be updated, as well as to whether theprofile should be completely overwritten or if only the attributesselected for storage should be updated (allowing the user to easilyupdate a small number of settings without having to redefine the entireprofile). At step 138, the system stores the profile within the selecteddocument(s) or object(s). If desired, the stored profile can beencrypted and/or locked (such as with a password) when stored to preventunauthorized or unintentional changes and/or usage. This security mayinclude one or more authentication methods and technologies such asbiometric identification (retinal scan, fingerprint, voiceauthentication, etc.), SmartCards, USB keys, etc. The process thenproceeds to step 140. If it is determined at step 130 to not save theprofile internally, the process proceeds directly to step 140.

At step 140 of FIG. 1A, the system determines if the profile is to besaved externally. If not, the process proceeds directly to step 150 andends. If the profile is to be saved externally, the process proceeds tostep 142 where a unique identifier (such as a serial number) is appliedto the profile. If such an identifier has already been assigned to theprofile, this step may be omitted. The process then proceeds to step 144to determine if a dynamic link is to be established with the externalprofile. If so, the process proceeds to step 146 to internally flag thelink as a dynamic link so as to optionally dynamically update theprofile definition as changes are made. Flagging the link as dynamicalso allows the existing (i.e. used for profile definition) content tobe updated (either completely automatically or by optionally promptingthe user) if the stored profile is updated. The optional features may bespecified as user-level, system-level, and/or one or more other levelsof preferences, depending upon the behavior and level of flexibilitydesired. Dynamic links and groups are more fully explained above. Theprocess then proceeds to step 148. If it is determined that a dynamiclink is not desired, the process proceeds directly to step 148.

At step 148 of FIG. 1A, the profile is saved to an external locationsuch as an external database, an external file system, etc. If theselected profile has previously been stored in the external location,the user may be prompted to confirm that the profile information shouldbe changed or updated, as well as to determine whether the profileshould be completely overwritten or if only the attributes selected forstorage should be updated (allowing the user to easily update a smallnumber of settings without having to redefine the entire profile).Tables, lists and indices are updated for the profiles as the profilesare changed. The process then proceeds to step 150 to end the process.

FIG. 2 is an embodiment of a process 200 for recalling a profile byselecting the content. At step 202, the user selects the particularcontent such as a Word document, CAD file, etc. At step 204, the systemdetermines if the content or controlling environment (such as theapplication containing the content) is configured to “use profiles.” Ifthe content is not programmed to use a profile at step 204, or if theuser has chosen not to “use profiles,” the process proceeds directly tostep 238 to end the process. If the content is programmed with aninstruction to “use profiles” and the controlling environment isconfigured to “use profiles,” the process proceeds to step 206 todetermine if the content contains profiles or links to profiles. If thecontent does not contain profiles or links to profiles, the processproceeds to step 208. If the content does contain profiles or links toprofiles, the process proceeds to step 216 to determine if an automaticprofile selection is activated. If the automatic profile selection isnot activated, the process proceeds directly to step 208. If theautomatic profile selection is activated, the process proceeds to step218 to determine if a default profile has been defined. If a defaultprofile has not been defined, the process proceeds to step 208. If adefault profile, which may be a linked profile, has been defined, theprocess proceeds to step 220 to activate a default profile. The processthen proceeds to step 222.

At step 208 of FIG. 2, a profile is selected by the user. Possiblesources of profiles are internally stored profiles or an external sourceof profiles, such as databases, files and other sources. For the exampleof a Word document, profiles can be extracted and used from any othersource, including other Word documents. The process then proceeds tostep 210 where the user can decide whether to apply all of the profileor only a portion of the profile. If the entire profile is to beapplied, the process proceeds directly to step 214. If only a portion ofthe profile or none of the profile is to be applied, the processproceeds to step 212. At step 212, the desired attributes of the profileare selected by the user. The attributes may be organized into multiplecategories and subcategories. Categories are similar to groups asdiscussed above, but constitute a collection of related attributes. Themultiple categories and subcategories allow the user to “select all” or“deselect all” for increased efficiency and flexibility when configuringa profile. The selections may be persistent, i.e., settings may beremembered between reboots/restarts, and may be stored and recalled asgroups or profiles as described above.

The process of FIG. 2 then proceeds to step 214 where the system createsa temporary profile based on user selections and sets the profileactive. The process may then optionally proceed, depending onconfiguration options, to step 250 where the user is prompted whether tocreate a link to the profile. If the user chooses not to create a link,the process then proceeds directly to step 222. If the user chooses tocreate a link, the process then proceeds to step 252 where a link to theprofile is created in the content. At step 254, it is determined whetherthe profile should be set as the default profile. If it is determined asstep 254 that the profile should be set as the default profile, theprocess proceeds to step 256 to flag the profile as the default profile.This indicator of which profile is the default profile may be storedwith the content. If a default profile is already defined, the user may(optionally, depending on configuration options) be prompted to confirmthat the new profile should become the default profile, in which casethe profile that was previously the default profile will no longer bethe default profile. The process then proceeds to step 258. If it isdetermined at step 254 that the profile is not to be saved as thedefault profile, the process proceeds directly to step 258. At step 258it is determined if a dynamic link is to be established with theprofile. If so, the process proceeds to step 260 to internally flag thelink as a dynamic link so as to optionally dynamically update theprofile definition as changes are made. Flagging the link as dynamicalso allows the content to be updated (either completely automaticallyor by optionally prompting the user) if the stored profile is updated.The process then proceeds to step 222. If it is determined that adynamic link is not desired, the process proceeds directly to step 222.At step 222, the system determines if an active profile has beendefined. If an active profile has not been defined, or in other words,if the temporary profile was not successfully created or if the defaultprofile is not present or is corrupted, the process proceeds directly tostep 238 and the process ends. If an active profile has been defined,the process proceeds to step 224 to reset the current attribute pointerin the active profile. In other words, a pointer is set in the profileto point to the current attribute in the profile. The process thenproceeds to step 226 to determine if the current attribute is applicableand valid. This verification enables profiles to be applied to varioustypes of content that may not be identical to the content from which theoriginal profile was generated, such as recalling an automobile profilein an automobile different from the automobile in which the profile wasdefined, i.e., there may be different numbers of radio presets, no seatheight adjustment, etc. The verification operation determines if thecurrent attribute can be applied to the content, i.e., if the currentattribute has a corresponding attribute in the content, and if so, ifthe attribute data is valid for the content, i.e., if the attribute datacan be applied to the content. For the example of an automobile profile,a profile attribute for a radio station preset may be applicable if theautomobile has configurable radio preset buttons, but may only be validif the attribute's preset button number exists in the automobile. Anadditional example is the case of applying an automobile profile to ahome theater system, in which the radio preset attributes in the profilemay have corresponding attributes in the home theater system, but otherprofile attributes may not. If the current attribute is applicable andvalid, the process proceeds to step 228 to apply the current attributeto the content. For the example of an automobile profile, seatpositions, climate controls settings, engine performance settings,sun/moonroof settings, and audio settings can all be set, as well asother settings such as display brightness, mirror positions and otherinitializing options. The process then proceeds to step 230. If it isdetermined at step 226 that the current attribute is not applicable andvalid, such as an attribute for audio radio station preset button 6 whenthe current vehicle only has 5 radio station preset buttons, the processproceeds directly to step 230. At step 230, the current attributepointer is incremented, meaning that the next attribute is accessed. Theprocess then proceeds to step 232 to determine if all of the attributeshave been accessed and applied to the content. If not, the process loopsback to step 226. If all of the attributes have been processed andeither applied or skipped, the process proceeds to step 234 to determineif any startup attributes are present. If startup attributes arepresent, the process proceeds to step 236 to process the startupattributes which may include starting applications, etc. The processthen ends at step 238. If it is determined at step 234 that there are nostartup attributes present, the process ends at step 238.

FIG. 3 is an embodiment of a process 300 for recalling a profile byselecting the profile. At step 302, the profile is selected. The processthen proceeds to step 304 to determine if a content source has beendefined. If the content source has been defined, the process proceeds tostep 308. If the content source has not been defined, the processproceeds to step 306 to specify the content source such as a document orportion of a document, file, database, etc. At step 308, content isloaded from the selected source, if necessary. The process then proceedsto step 310 to determine if the entire profile should be applied to thecontent. If so, the process proceeds directly to step 314. If the entireprofile is not to be applied to the content, the process proceeds tostep 312 where the user selects attributes of the selected profile to beapplied to the content. The user may use categories and subcategorieseach of which may have a “select all” and a “deselect all.” Theselections may be persistent and may be stored and recalled as groups orprofiles. These groups and/or profiles can be defined by the user and/orspecified by the system (i.e. company-wide definitions, etc.) to greatlysimplify configuration options. For example, in the case of a Worddocument, if the user wants to define a set of profiles containingspecific text formatting attributes such as font, size, line spacing,character adjustment setting, etc., the user may define a groupcontaining the desired items and whether each item should be included orexcluded, as well as (optionally) the setting of the item (attribute),effectively creating a profile that can be used to define otherprofiles. Then, when defining the new profile, rather than having tomanually specify which attributes to include and/or exclude, the usercan just specify the group created above, and all settings will beautomatically adjusted as specified in the group. The user, whenspecifying the group, can optionally select, for example, “turn all ingroup ON” or “turn all in group OFF” instead of simply applying thesettings stored in the group, thereby further increasing the flexibilityof the selection operation. The process then proceeds to step 314 wherethe system creates a temporary profile using the selections of the userand sets the temporary profile active. The process then proceeds to step316 where the system determines if an active profile has been defined.If an active profile has not been defined, or in other words, if thetemporary profile was not successfully created, the process proceeds tostep 332 and ends. If it is determined at step 316 that an activeprofile has been defined, the process proceeds to step 318 where thesystem resets the current attribute pointer in the active profile. Theprocess then proceeds to step 320 to determine if the current attributeis applicable and valid. This verification enables profiles to beapplied to various types of content that may not be identical to thecontent from which the original profile was generated, such as recallinga computer desktop profile on a computer different from the computer onwhich the profile was defined, i.e. the desired screen resolution maynot be available, the desired applications may not be available for use,etc. The verification operation determines if the current attribute canbe applied to the content, and if so, if the attribute data is valid forthe content. If the current attribute is not applicable and valid, suchas an attribute to start an application that is not installed on thedestination computer, the process proceeds to step 324. If the currentattribute is applicable and valid, the process proceeds to step 322where the current attribute is applied to the content. For the exampleof a computer desktop, attributes can specify application and operatingsystem options and settings, application window positions and sizes,power, screen and hardware settings, as well as other options andsettings. The process then proceeds to step 324 to increment the currentattribute pointer. At step 326, it is determined if all of theattributes have been processed. If not, the process loops back to step320. If all of the attributes have been processed and either applied tothe content or skipped, the process proceeds to step 328 to determine ifany startup attributes are present. If no startup attributes arepresent, the process ends at step 332. If startup attributes arepresent, the process proceeds to step 330 where the system processes thestartup attributes. The startup attributes may include startingapplications with specific options, data files, window positions andsizes, etc., as well as other startup activities, operations, etc. Theprocess then ends at step 332.

FIG. 4 illustrates an embodiment of the process 400 for creating a newprofile for multiple views in a single document. Multiple views into asingle document can be useful for a wide variety of applications,including the simple examples of looking at multiple sections of a Worddocument in multiple windows simultaneously, viewing multiple sectionsof an Excel workbook simultaneously, or viewing multiple regions(perhaps at different zoom levels) of a digital photographsimultaneously in a photo-editing program. The new profile can save thecomplete layout, including which document is open, the associated windowsizes, positions, zoom scales, etc., along with other settings such asposition(s) within the document, if desired. This will allow the user tore-create the desired environment very quickly and easily. At step 402,the content is either created or obtained. At step 404, the userconfigures the attributes of the content such as formatting, windowsize, settings, hidden items, zoom scales, etc. At this point, theprocess can either proceed to step 406 or step 410. If the processproceeds to step 406, the user selects content from which to create aprofile. The content could be, for example, the entire content of thedocument and its associated windows or one or more selected portions ofthe document. The process then proceeds to step 408 where the userrequests the controller to define a profile. Alternatively, rather thanproceeding to step 406, the process can proceed to step 410 where theuser requests the controller to define a profile. The process thenproceeds to step 412 to select the content from which to create theprofile. Again, this could be the entire content for the entire documentand its associated windows or one or more selected portions of thedocument. If the user desires to create a generic profile withoutselecting specific content, the user may effectively skip step 412 bynot selecting any content. The process then may optionally proceed tostep 414 to select a name for the profile and, if desired, a descriptionof the profile.

The process of FIG. 4 then proceeds to step 416 where the user selectsattributes of the content to be stored for future use. These attributesmay be provided in categories and subcategories, each of which mayinclude an option to “select all” or “deselect all.” The selection ofattributes may be persistent, i.e., remembered between reboots/restarts,and may be stored and recalled as groups or profiles. In the case ofmultiple views into a single document, the user might typically selectitems in categories dealing with window configuration and sizes,document positions (such as current page in a text document), zoomscales (perhaps on a per-window basis), etc., as well as any otherdesired attributes. The process may then optionally proceed to step 418to define the profile type to store. Again, the profile types aredefined by the user. For example, one or more profiles may have alreadybeen created and stored in the system. As described in FIG. 1B, a useror multiple users may have multiple profiles which can be classifiedinto profile types. The creation of profile types and the use of theseprofile types are described above with respect to FIG. 1B. Asillustrated in FIG. 1B, the user or multiple users may have multipleprofiles such as first profile (P1) 152, second profile (P2) 153, and athird profile (P3) 154. The user may then wish to link the first type(T1) 157, which may be an audio profile with profiles (P1) 152 and (P2)153, since both profiles (P1) 152 and (P2) 153 include audio categories.However, the user may associate or link the first profile type (T1) 157with any particular profile, even though the profile may not includeaudio attributes. It is strictly up to the user how profile types willbe linked to the particular profiles.

The process of FIG. 4 then proceeds to step 420 where the user isprompted to save the profile. At step 422, it is determined whether aprofile name has been defined. If not, the user defines a profile nameand (optional) description at step 424. If a profile name has beendefined, the process proceeds directly to step 426. At step 426 of FIG.4, the user defines the storage type or types for the profile. Forexample, the profile may be stored internally in the document file andmay be retrieved when the document file is opened. Further, the profilemay be stored in an external file that may be linked to the documentfile. Still further, the profile may be stored in an external database,as described above, with respect to FIG. 1A. The process then proceedsto step 428 where the user accepts storage of the profile or cancelsthat storage. If the user cancels storage, the process ends at step 450.If the user accepts the storage of the profile, as the user defines thatstorage in step 426, the process proceeds to step 432. At step 432, itis determined whether the profile should be set as the default profile.If the profile should not be set as the default profile, the processthen proceeds directly to step 430. If the profile is to be set as thedefault profile, the process proceeds to step 434 to flag the profile asthe default profile. This indicator of which profile is the defaultprofile may be stored with the content. If a default profile is alreadydefined, the user may (optionally, depending on configuration options)be prompted to confirm that the new profile should become the defaultprofile, in which case the profile that was previously the defaultprofile will no longer be the default profile. The process then proceedsto step 430. At step 430, the system determines if the profile is to beinternally stored. If the profile is not to be internally stored, theprocess proceeds to directly to step 440. If the profile is to beinternally stored, the process proceeds to step 436, where the systemautomatically selects the document as the storage destination. In otherwords, the profile attributes are stored as part of the document file.The process then proceeds to step 438 where the system stores theprofile information within the document. If the selected profile haspreviously been stored within the document, the user may be prompted toconfirm that the profile information should be changed or updated, aswell as to specify whether the profile should be completely overwrittenor if only the attributes selected for storage should be updated(allowing the user to easily update a small number of settings withouthaving to redefine the entire profile). The profile information may beencrypted and/or locked (such as with a password) to preventunauthorized or unintentional changes and/or usage. The process thenproceeds to step 440 to determine if the profile should be externallysaved. If it is determined that the profile is not to be externallystored, the process proceeds to step 450 and ends. If it is determinedthat the profile is to be externally stored, the system assigns a uniqueID to the profile at step 442. At step 444, the system determines if adynamic link has been requested. A dynamic link provides a “live” uni-or bi-directional link between the document and the stored profile,which means that if the stored profile changes (such as by anotheruser), the user will be (optionally) notified of the change and (alsooptionally) prompted whether the changed profile should be applied tothe content, or if the defining aspects of the profile change, thestored profile may be automatically updated (with or without promptingthe user, depending on configuration options). Dynamic links are morefully described above. If a dynamic link has not been requested, theprocess proceeds to step 448. If a dynamic link has been requested, theprocess proceeds to step 446 where the system internally flags the linkas a dynamic link that is accessed using the profile name and/oridentifier. At step 448, the profile is saved to an external locationsuch as a database, file system, etc. If the selected profile haspreviously been stored in the external location, the user may beprompted to confirm that the profile information should be changed orupdated, as well as to determine whether the profile should becompletely overwritten or if only the attributes selected for storageshould be updated (allowing the user to easily update a small number ofsettings without having to redefine the entire profile). Tables, listsand indices are updated from the stored profile as required. As withinternal storage, the profile information may be encrypted and/or locked(such as with a password) to prevent unauthorized or unintentionalmodification and/or usage. The process then ends at step 450.

FIG. 5 illustrates an embodiment of a process 500 for creating a newprofile for multiple views into multiple documents in a singleapplication. Multiple views into multiple documents in a singleapplication can be useful for a wide variety of purposes, including thesimple examples of editing, viewing and/or comparing multiple sectionsof multiple Word documents in multiple windows simultaneously, editing,viewing and/or comparing multiple sections of multiple Excel workbookssimultaneously, or editing, viewing and/or comparing multiple regions(perhaps at different zoom levels) of digital photographs simultaneouslyin a photo-editing program. The new profile can save the completelayout, including which documents are open, the associated window sizes,positions, zoom scales, etc., along with other settings such asposition(s) within each document, if desired. This will allow the userto re-create the desired environment very quickly and easily. At step502, the content is either created or obtained. At step 504, the userconfigures the attributes of the content such as formatting, windowsize, settings, hidden items, zoom scales, etc.

After step 504 of FIG. 5, the process can either proceed to step 506 orstep 510. If the process proceeds to step 506, the user selects contentfrom which to create a profile. The content could be the entire contentof the documents and the associated windows or one or more selectedportions or the documents. The process then proceeds to step 508 wherethe user requests the controller to define a profile. Alternatively,rather than proceeding to step 506, the process can proceed to step 510where the user initially requests the controller to define a profile.The process then proceeds to step 512 to select the content from whichto create the profile. Again, this could be the entire content for theentire document or a selected portion, such as one or more paragraphs ofa document. If the user desires to create a generic profile withoutselecting specific content, the user may effectively skip step 512 bynot selecting any content. The process then may optionally proceed tostep 514 to select a name for the profile and, if desired, a descriptionof the profile. The process then proceeds to step 516 where the userselects attributes of the content to be stored for future use. Theseattributes may be provided in categories and subcategories, each ofwhich may include an option to “select all” or “deselect all.” Theselection of attributes may be persistent, i.e., remembered betweenreboots/restarts, and may be stored and recalled as groups or profiles.In the case of multiple views into multiple documents in a singleapplication, the user would typically select items in categories dealingwith window configuration and sizes, document positions, zoom scales(perhaps on a per-window basis), etc., as well as any other desiredattributes. The process may then optionally proceed to step 518 todefine the profile type that the user desires to store. Again, theprofile types are defined by the user. For example, one or more profilesmay have already been created and stored in the system. As described inFIG. 1B, a user or multiple users may have multiple profiles which canbe classified into profile types. The creation of profile types and theuse of these profile types are described above with respect to FIG. 1B.

The process of FIG. 5 then proceeds to step 520 where the user isprompted to save the profile. At step 522, it is determined whether aprofile name has been defined. If not, the user defines a profile nameand (optional) description at step 524. If a profile name has beendefined, the process proceeds directly to step 526. At step 526 of FIG.5, the user defines the storage type or types for the profile. Forexample, the profile may be stored internally in one or more of thedocument files and may be retrieved when one of the document filescontaining the profile is opened. Further, the profile can be stored inan external file that may be linked to the document file. Still further,the profile may be stored in an external database, as described above,with respect to FIG. 1A. The process then proceeds to step 528 where theuser accepts storage of the profile or cancels that storage. If the usercancels storage, the process ends at step 550. If the user accepts thestorage of the profile, as the user defines that storage in step 526,the process proceeds to step 532. At step 532, it is determined whetherthe profile should be set as the default profile. If the profile shouldnot be set as the default profile, the process then proceeds directly tostep 530. If the profile is to be set as the default profile, theprocess proceeds to step 534 to flag the profile as the default profile.This indicator of which profile is the default profile may be storedwith the content. If a default profile is already defined, the user may(optionally, depending on configuration options) be prompted to confirmthat the new profile should become the default profile, in which casethe profile that was previously the default profile will no longer bethe default profile. The process then proceeds to step 530. At step 530,the system determines if the profile is to be internally stored. If theprofile is not to be internally stored, the process proceeds to directlyto step 540. If the profile is to be internally stored, the processproceeds to step 536, where the destination document(s), or in otherwords, the documents which are to contain the profile information, areselected based on configuration options. In this case, the profileattributes are stored as part of the document file(s). The process thenproceeds to step 538 where the system stores the profile informationwithin the selected document(s). For each selected document, if theselected profile has previously been stored within the document, theuser may be prompted to confirm that the profile information should bechanged or updated, as well as to specify whether the profile should becompletely overwritten or if only the attributes selected for storageshould be updated (allowing the user to easily update a small number ofsettings without having to redefine the entire profile). The profileinformation may be encrypted and/or locked (such as with a password) toprevent unauthorized or unintentional changes and/or usage. The processthen proceeds to step 540 to determine if the profile should beexternally saved. If it is determined that the profile is not to beexternally stored, the process proceeds to step 550 and ends. If it isdetermined that the profile is to be externally stored, the systemassigns a unique ID to the profile at step 542.

The process of FIG. 5 then proceeds to step 544. At step 544, the systemdetermines if a dynamic link has been requested. A dynamic link providesa “live” uni- or bi-directional link between the document and the storedprofile, which means that if the stored profile changes (such as byanother user), the user will be (optionally) notified of the change and(also optionally) prompted whether the changed profile should be appliedto the content, or if the defining aspects of the profile change, thestored profile may be automatically updated (with or without promptingthe user, depending on configuration options). Dynamic links are morefully described above. If a dynamic link has not been requested, theprocess proceeds to step 548. If a dynamic link has been requested, theprocess proceeds to step 546 where the system internally flags the linkas a dynamic link that is accessed using the profile name and/oridentifier. At step 548, the profile is saved to an external locationsuch as a database, file system, etc. If the selected profile haspreviously been stored in the external location, the user may beprompted to confirm that the profile information should be changed orupdated, as well as to determine whether the profile should becompletely overwritten or if only the attributes selected for storageshould be updated (allowing the user to easily update a small number ofsettings without having to redefine the entire profile). Tables, listsand indices are updated from the stored profile as required. As withinternal storage, the profile information may be encrypted and/or locked(such as with a password) to prevent unauthorized or unintentionalmodification and/or usage. The process then ends at step 550.

FIG. 6 illustrates an embodiment of a process 600 for creating a newprofile for multiple views into multiple documents in multipleapplications. Multiple views into multiple documents in multipleapplications can be useful for a wide variety of purposes, including thesimple example of editing, viewing and/or comparing multiple sections ofmultiple types of documents simultaneously, such as editing or viewingmultiple views of one or more Word documents, one or more Excelworkbooks, one or more presentation documents, and one or more images.The new profile can save the complete layout, including whichapplications and documents are open, the associated window sizes,positions, zoom scales, etc., along with other settings related to eachapplication, if desired. This will allow the user to re-create thedesired environment very quickly and easily. At step 602, the content iseither created or obtained. At step 604, the user configures theattributes of the content such as formatting, window sizes, settings,hidden items, zoom scales, etc. After step 604, the process can eitherproceed to step 606 or step 610. If the process proceeds to step 606,the user selects content from which to create a profile. The contentcould be the entire content of the documents or one or more selectedportions of any of the documents. The process then proceeds to step 608where the user requests the controller to define a profile.Alternatively, rather than proceeding to step 606, the process canproceed to step 610 where the user requests the controller to define aprofile. The process then proceeds to step 612 to select the contentfrom which to create the profile. Again, this could be the entirecontent for the entire document or a selected portion, such as one ormore paragraphs of a document. If the user desires to create a genericprofile without selecting specific content, the user may effectivelyskip step 612 by not selecting any content. The process then mayoptionally proceed to step 614 to select a name for the profile and, ifdesired, a description of the profile. The process then proceeds to step616 where the user selects attributes of the content to be stored forfuture use. These attributes may be provided in categories andsubcategories, each of which may include an option to “select all” or“deselect all.” The selection of attributes may be persistent, i.e.,remembered between reboots/restarts, and may be stored and recalled asgroups or profiles. In the case of multiple views into multipledocuments in multiple applications, the user would typically selectitems in categories dealing with window configuration and sizes,document positions, zoom scales (perhaps on a per-window basis), etc.,as well as any other desired attributes. The process may then optionallyproceed to step 618 to define the profile type that the user desires tostore. Again, the profile types are defined by the user. For example,one or more profiles may have already been created and stored in thesystem. As described in FIG. 1B, a user or multiple users may havemultiple profiles which can be classified into profile types. Thecreation of profile types and the use of these profile types aredescribed above with respect to FIG. 1B.

The process of FIG. 6 then proceeds to step 620 where the user isprompted to save the profile. At step 622, it is determined whether aprofile name has been defined. If not, the user defines a profile nameand (optional) description at step 624. If a profile name has beendefined, the process proceeds directly to step 626. At step 626 of FIG.6, the user defines the storage type or types for the profile. Forexample, the profile may be stored internally in one or more of thedocument files and may be retrieved when one of the document filescontaining the profile is opened. Further, the profile can be stored inan external file that may be linked to the document file. Still further,the profile may be stored in an external database, as described above,with respect to FIG. 1A. The process then proceeds to step 628 where theuser accepts storage of the profile or cancels that storage. If the usercancels storage, the process ends at step 650. If the user accepts thestorage of the profile, as the user defines that storage in step 626,the process proceeds to step 632. At step 632, it is determined whetherthe profile should be set as the default profile. If the profile shouldnot be set as the default profile, the process then proceeds directly tostep 630. If the profile is to be set as the default profile, theprocess proceeds to step 634 to flag the profile as the default profile.This indicator of which profile is the default profile may be storedwith the content. If a default profile is already defined, the user may(optionally, depending on configuration options) be prompted to confirmthat the new profile should become the default profile, in which casethe profile that was previously the default profile will no longer bethe default profile. The process then proceeds to step 630. At step 630,the system determines if the profile is to be internally stored. If theprofile is not to be internally stored, the process proceeds to directlyto step 640. If the profile is to be internally stored, the processproceeds to step 636, where the destination document(s), or in otherwords, the documents which are to contain the profile information, areselected based on configuration options. In this case, the profileattributes are stored as part of the selected document file(s). Theprocess then proceeds to step 638 where the system stores the profileinformation within the document(s). For each selected document, if theselected profile has previously been stored within the document, theuser may be prompted to confirm that the profile information should bechanged or updated, as well as to specify whether the profile should becompletely overwritten or if only the attributes selected for storageshould be updated (allowing the user to easily update a small number ofsettings without having to redefine the entire profile). The profileinformation may be encrypted and/or locked (such as with a password) toprevent unauthorized or unintentional changes and/or usage. The processthen proceeds to step 640 to determine if the profile should beexternally saved. If it is determined that the profile is not to beexternally stored, the process proceeds to step 650 and ends. If it isdetermined that the profile is to be externally stored, the systemassigns a unique ID to the profile at step 642.

The process of FIG. 6 then proceeds to step 644. At step 644, the systemdetermines if a dynamic link has been requested. A dynamic link providesa “live” uni- or bi-directional link between the document and the storedprofile, which means that if the stored profile changes (such as byanother user), the user will be (optionally) notified of the change and(also optionally) prompted whether the changed profile should be appliedto the content, or if the defining aspects of the profile change, thestored profile may be automatically updated (with or without promptingthe user, depending on configuration options). Dynamic links are morefully described above. If a dynamic link has not been requested, theprocess proceeds to step 648. If a dynamic link has been requested, theprocess proceeds to step 646 where the system internally flags the linkas a dynamic link that is accessed using the profile name and/oridentifier. At step 648, the profile is saved to an external locationsuch as a database, file system, etc. If the selected profile haspreviously been stored in the external location, the user may beprompted to confirm that the profile information should be changed orupdated, as well as to determine whether the profile should becompletely overwritten or if only the attributes selected for storageshould be updated (allowing the user to easily update a small number ofsettings without having to redefine the entire profile). Tables, listsand indices are updated from the stored profile as required. As withinternal storage, the profile information may be encrypted and/or locked(such as with a password) to prevent unauthorized or unintentionalmodification and/or usage. The process then ends at step 650.

FIG. 7 illustrates an embodiment of a process 700 for creating a newprofile for video playback. This type of profile can apply to videoplayback on a variety of devices, including handheld video players,computer screens, multimedia projection systems, theater projectors,etc. This type of profile can save the entire environment, including (ifapplicable) lighting, power settings, audio settings, zoom scale, windowsize and position, language and captioning settings, playlists, etc.This will allow the user to re-create the desired environment veryquickly and easily. At step 702, the content is either created orobtained. At step 704, the user configures the attributes of the contentsuch as power settings, audio settings, window size(s), zoom scales,etc. After step 704, the process can either proceed to step 706 or step710. If the process proceeds to step 706, the user selects content fromwhich to create a profile. The content could be the entire content ofthe documents or one or more selected portions of the document, such asone or more portions of a video file. The process then proceeds to step708 where the user requests the controller to define a profile.Alternatively, rather than proceeding to step 706, the process canproceed to step 710 where the user requests the controller to define aprofile. The process then proceeds to step 712 to select the contentfrom which to create the profile. As before, this could be the entirecontent for the entire video file or one or more selected portions, suchas portions of a video file. If the user desires to create a genericprofile without selecting specific content, the user may effectivelyskip step 712 by not selecting any content. The process then mayoptionally proceed to step 714 to select a name for the profile and, ifdesired, a description of the profile. The process then proceeds to step716 where the user selects attributes of the content to be stored forfuture use. These attributes may be provided in categories andsubcategories, each of which may include an option to “select all” or“deselect all.” The selection of attributes may be persistent, i.e.,remembered between reboots/restarts, and may be stored and recalled asgroups or profiles. In the case of multiple views into a singledocument, the user would typically select items in categories dealingwith window configuration and sizes, document positions, zoom scales(perhaps on a per-window basis), etc., as well as any other desiredattributes. The process may then optionally proceed to step 718 todefine the profile type to store. Again, the profile types are definedby the user. For example, one or more profiles may have already beencreated and stored in the system. As described in FIG. 1B, a user ormultiple users may have multiple profiles which can be classified intoprofile types. The creation of profile types and the use of theseprofile types is described above with respect to FIG. 1B.

The process of FIG. 7 then proceeds to step 720 where the user isprompted to save the profile. At step 722, it is determined whether aprofile name has been defined. If not, the user defines a profile nameand (optional) description at step 724. If a profile name has beendefined, the process proceeds directly to step 726. At step 726 of FIG.7, the user defines the storage type or types for the profile. Forexample, the profile may be stored internally in the document file andmay be retrieved when the document file is opened. Further, the profilemay be stored in an external file that may be linked to the documentfile. Still further, the profile may be stored in an external database,as described above, with respect to FIG. 1A. The process then proceedsto step 728 where the user accepts storage of the profile or cancelsthat storage. If the user cancels storage, the process ends at step 750.If the user accepts the storage of the profile, as the user defines thatstorage in step 726, the process proceeds to step 732. At step 732, itis determined whether the profile should be set as the default profile.If the profile should not be set as the default profile, the processthen proceeds directly to step 730. If the profile is to be set as thedefault profile, the process proceeds to step 734 to flag the profile asthe default profile. This indicator of which profile is the defaultprofile may be stored with the content. If a default profile is alreadydefined, the user may (optionally, depending on configuration options)be prompted to confirm that the new profile should become the defaultprofile, in which case the profile that was previously the defaultprofile will no longer be the default profile. The process then proceedsto step 730. At step 730, the system determines if the profile is to beinternally stored. If the profile is not to be internally stored, theprocess proceeds to directly to step 740. If the profile is to beinternally stored, the process proceeds to step 736, where the systemautomatically selects the document as the storage destination. In otherwords, the profile attributes are stored as part of the document file.The process then proceeds to step 738 where the system stores theprofile information within the document. If the selected profile haspreviously been stored within the document, the user may be prompted toconfirm that the profile information should be changed or updated, aswell as to specify whether the profile should be completely overwrittenor if only the attributes selected for storage should be updated(allowing the user to easily update a small number of settings withouthaving to redefine the entire profile). The profile information may beencrypted and/or locked (such as with a password) to preventunauthorized or unintentional changes and/or usage. The process thenproceeds to step 740 to determine if the profile should be externallystored. If it is determined that the profile is not to be externallystored, the process proceeds to step 750 and ends. If it is determinedthat the profile is to be externally stored, the system assigns a uniqueID to the profile at step 742.

The process of FIG. 7 then proceeds to step 744. At step 744, the systemdetermines if a dynamic link has been requested. A dynamic link providesa “live” uni- or bi-directional link between the document and the storedprofile, which means that if the stored profile changes (such as byanother user), the user will be (optionally) notified of the change and(also optionally) prompted whether the changed profile should be appliedto the content, or if the defining aspects of the profile change, thestored profile may be automatically updated (with or without promptingthe user, depending on configuration options). Dynamic links are morefully described above. If a dynamic link has not been requested, theprocess proceeds to step 748. If a dynamic link has been requested, theprocess proceeds to step 746 where the system internally flags the linkas a dynamic link that is accessed using the profile name and/oridentifier. At step 748, the profile is saved to an external locationsuch as a database, file system, etc. If the selected profile haspreviously been stored in the external location, the user may beprompted to confirm that the profile information should be changed orupdated, as well as to determine whether the profile should becompletely overwritten or if only the attributes selected for storageshould be updated (allowing the user to easily update a small number ofsettings without having to redefine the entire profile). Tables, listsand indices are updated from the stored profile as required. As withinternal storage, the profile information may be encrypted and/or locked(such as with a password) to prevent unauthorized or unintentionalmodification and/or usage. The process then ends at step 750.

FIG. 8 is an embodiment of a process 800 for recalling a video playbackprofile by selecting a file containing the video content. At step 802,the user selects the desired video file (the “content”). At step 804,the system determines if the content or controlling environment (such asthe application containing the content) is configured to “use profiles.”If the content is not programmed to use a profile at step 804, or if theuser has chosen not to “use profiles,” the process proceeds directly tostep 838 to end the process. If the content is programmed with aninstruction to “use profiles” and the controlling environment isconfigured to “use profiles,” the process proceeds to step 806 todetermine if the content contains profiles or links to profiles. If thecontent does not contain profiles or links to profiles, the processproceeds to step 808. If the content does contain profiles or links toprofiles, the process proceeds to step 816 to determine if an automaticprofile selection is activated. If the automatic profile selection isnot activated, the process proceeds directly to step 808. If theautomatic profile selection is activated, the process proceeds to step818 to determine if a default profile has been defined. If a defaultprofile has not been defined, the process proceeds to step 808. If adefault profile, which may be a linked profile, has been defined, theprocess proceeds to step 820 to activate a default profile. The processthen proceeds to step 822.

At step 808 of FIG. 8, a profile is selected by the user. This profilemay come from a variety of sources, including internally stored profilesor externally stored profiles, such as those stored in databases, filesand other sources. For this example of a video file, a likely sourcewould be other video files (though other file types could certainly beused). The process then proceeds to step 810 where the user can decidewhether to apply all of the profile or only a portion of the profile. Ifthe entire profile is to be applied, the process proceeds directly tostep 814. If only a portion of the profile or none of the profile is tobe applied, the process proceeds to step 812. At step 812, the desiredattributes of the profile are selected by the user. The attributes maybe organized into multiple categories and subcategories. Categories aresimilar to groups as discussed above, but constitute a collection ofrelated attributes. The multiple categories and subcategories allow theuser to “select all” or “deselect all” for increased efficiency andflexibility when configuring a profile. The selections may bepersistent, i.e., settings may be remembered between reboots/restarts,and may be stored and recalled as groups or profiles, as describedabove.

The process of FIG. 8 then proceeds to step 814 where the system createsa temporary profile based on user selections and sets the profileactive. The process then proceeds to step 822 where the systemdetermines if an active profile has been defined. If an active profilehas not been defined, or in other words, if the temporary profile wasnot successfully created or if the default profile is not present or iscorrupted, the process proceeds directly to step 838 and the processends. If an active profile has been defined, the process proceeds tostep 824 to reset the current attribute pointer in the active profile.In other words, a pointer is set in the profile to point to the currentattribute in the profile. The process then proceeds to step 826 todetermine if the current attribute is applicable and valid. Thisverification enables profiles to be applied to various types of contentthat may not be identical to the content from which the original profilewas generated, such as, in the case of a video playback profile, havinga video environment different from the environment in which the profilewas defined, i.e., no surround sound system, no video projection screento lower, etc. The verification operation determines if the currentattribute can be applied to the content, and if so, if the attributedata is valid for the content. If the current attribute is applicableand valid, the process proceeds to step 828 to apply the currentattribute to the content. For the example of a video playback profile,some of the settings that might be adjusted could include powersettings, screen saver being turned off and brightness adjustment fordesktop playback, lighting settings and screen position for theprojection room, audio settings such as surround sound and volume, andother initializing options, perhaps such as sending a signal for allcell phones, pagers, etc. to automatically switch into “Silent” mode.The process then proceeds to step 830. If it is determined at step 826that the current attribute is not applicable and valid, such as anattribute for projection screen position adjustment when the currentenvironment does not include a projection screen, the process proceedsdirectly to step 830. At step 830, the current attribute pointer isincremented, meaning that the next attribute is accessed. The processthen proceeds to step 832 to determine if all of the attributes havebeen accessed and applied to the content. If not, the process loops backto step 826. If all of the attributes have been processed and eitherapplied or skipped, the process proceeds to step 834 to determine if anystartup attributes are present. If startup attributes are present, theprocess proceeds to step 836 to process the startup attributes which mayinclude setting window size(s) and zoom scale(s), setting the startingposition of the video, pausing the video to wait for user input,starting additional applications, activating control functions (such assending a signal for all cell phones, pagers, etc. to automaticallyswitch into “Silent” mode, as above), etc. The process then ends at step838. If it is determined at step 834 that there are no startupattributes present, the process ends at step 838.

FIG. 9 is an embodiment of a process 900 for recalling a video playbackprofile by selecting the profile. At step 902, the profile is selected.The process then proceeds to step 904 to determine if a video file (i.e.“content source”) has been defined. If the content source has beendefined, the process proceeds to step 908. If the content source has notbeen defined, the process proceeds to step 906 to specify the contentsource, such as a video file or portion of a video file (though othersources may be used). At step 908, content is loaded from the selectedsource, if necessary. The process then proceeds to step 910 to determineif the entire profile should be applied to the content. If so, theprocess proceeds directly to step 914. If the entire profile is not tobe applied to the content, the process proceeds to step 912 where theuser selects attributes of the selected profile to be applied to thecontent. The user may use categories and subcategories each of which mayhave a “select all” and a “deselect all” to increase efficiency andflexibility, and to simplify the selection process. The selections maybe persistent and may be stored and recalled as groups or profiles asdefined previously. The process then proceeds to step 914 where thesystem creates a temporary profile using the selections of the user andsets the temporary profile active. The process then proceeds to step 916where the system determines if an active profile has been defined. If anactive profile has not been defined, or in other words, if the temporaryprofile was not successfully created (such as if the profile data iscorrupted), the process proceeds to step 932 and ends. If it isdetermined at step 916 that an active profile has been defined, theprocess proceeds to step 918 where the system resets the currentattribute pointer in the active profile. The process then proceeds tostep 920 to determine if the current attribute is applicable and valid.This verification enables profiles to be applied to various types ofcontent that may not be identical to the content from which the originalprofile was generated, as described above. The verification operationdetermines if the current attribute can be applied to the content, andif so, if the attribute data is valid for the content. If the currentattribute is not applicable and valid, such as an attribute to start anapplication that is not installed on the destination computer, theprocess proceeds to step 924. If the current attribute is applicable andvalid, the process proceeds to step 922 where the current attribute isapplied to the content. For the example of a video playback profile,some of the settings that might be adjusted could include powersettings, screen saver being turned off and brightness adjustment fordesktop playback, lighting settings and screen position for theprojection room, audio settings such as surround sound and volume, andother initializing options, perhaps such as sending a signal for allcell phones, pagers, etc. to automatically switch into “Silent” mode.The process then proceeds to step 924. At step 924, the currentattribute pointer is incremented, meaning that the next attribute isaccessed. At step 926, it is determined if all of the attributes havebeen processed. If not, the process loops back to step 920. If all ofthe attributes have been processed and either applied to the content orskipped, the process proceeds to step 928 to determine if any startupattributes are present. If no startup attributes are present, theprocess ends at step 932. If startup attributes are present, the processproceeds to step 930 where the system processes the startup attributes.The startup attributes for a video playback profile may include settingwindow size(s) and zoom scale(s), setting the starting position of thevideo, pausing the video to wait for user input, starting additionalapplications, etc. The process then ends at step 932.

FIG. 10 illustrates an embodiment of a process 1000 for creating a newprofile for CAD objects. This type of profile can apply to a variety ofCAD systems and objects (both 2-D and 3-D), as well as any non-CADapplication that utilizes data as objects. One use of this type ofprofile is to store the window size(s) and position(s), view settings,zoom levels, lighting settings, transparency, wireframe settings, units,background color, screen saver/power settings, etc. An additional use isto store the positions of objects, both relative to each other andwithin the CAD window(s), as well as the viewpoint, i.e., what the usersees in the window, which takes into account the view angle, the viewdirection, the “up” direction (needed to determine correct vieworientation), etc. This will allow the user to re-create the desiredenvironment very quickly and easily. At step 1002, the content is eithercreated or obtained. At step 1004, the user configures the attributes ofthe content such as window size(s), zoom scales, view settings, partpositions, view positions, etc. After step 1004, the process can eitherproceed to step 1006 or step 1010. If the process proceeds to step 1006,the user selects content from which to create a profile. The contentcould be the entire content of the CAD application or one or moreselected portions of the CAD data, such as one or more CAD objects. Theprocess then proceeds to step 1008 where the user requests thecontroller to define a profile. Alternatively, rather than proceeding tostep 1006, the process can proceed to step 1010 where the user requeststhe controller to define a profile. The process then proceeds to step1012 to select the content from which to create the profile. As before,this could be the entire content of the CAD application or one or moreselected portions, such as CAD objects. If the user desires to create ageneric profile without selecting specific content, the user mayeffectively skip step 1012 by not selecting any content. The processthen may optionally proceed to step 1014 to select a name for theprofile and, if desired, a description of the profile. The process thenproceeds to step 1016 where the user selects attributes of the contentto be stored for future use. These attributes may be provided incategories and subcategories, each of which may include an option to“select all” or “deselect all.” The selection of attributes may bepersistent, i.e., remembered between reboots/restarts, and may be storedand recalled as groups or profiles. In the case of a CAD application,the user might typically select items in categories dealing with windowconfiguration and sizes, object positions, zoom scales (perhaps on aper-window basis), view positions and settings, etc., as well as anyother desired attributes. The process may then optionally proceed tostep 1018 to define the profile type to store. Again, the profile typesare defined by the user. For example, one or more profiles may havealready been created and stored in the system. As described in FIG. 1B,a user or multiple users may have multiple profiles which can beclassified into profile types. The creation of profile types and the useof these profile types is described above with respect to FIG. 1B.

The process of FIG. 10 then proceeds to step 1020 where the user isprompted to save the profile. At step 1022, it is determined whether aprofile name has been defined. If not, the user defines a profile nameand (optional) description at step 1024. If a profile name has beendefined, the process proceeds directly to step 1026. At step 1026 ofFIG. 10, the user defines the storage type or types for the profile. Forexample, the profile may be stored internally in one or more of thedocument files and may be retrieved when one of the document filescontaining the profile is opened. Further, the profile can be stored inan external file that may be linked to the document file. Still further,the profile may be stored in an external database, as described above,with respect to FIG. 1A. The process then proceeds to step 1028 wherethe user accepts storage of the profile or cancels that storage. If theuser cancels storage, the process ends at step 1052. If the user acceptsthe storage of the profile, as the user defines that storage in step1026, the process may optionally proceed to step 1030 where the profileattributes may be transformed prior to storage. These transformationsmay include local and/or global referencing (such as modifying theattributes such as viewpoint position and zoom scale to be referenced inthe coordinate system of each CAD object, if applicable, or adjustingattributes as needed if the CAD objects contain data that is shared withother objects). At the completion of step 1028 (or 1030, if desired),the process proceeds to step 1034. At step 1034, it is determinedwhether the profile should be set as the default profile. If the profileshould not be set as the default profile, the process then proceedsdirectly to step 1032. If the profile is to be set as the defaultprofile, the process proceeds to step 1036 to flag the profile as thedefault profile. This indicator of which profile is the default profilemay be stored with the content. If a default profile is already defined,the user may (optionally, depending on configuration options) beprompted to confirm that the new profile should become the defaultprofile, in which case the profile that was previously the defaultprofile will no longer be the default profile. The process then proceedsto step 1032. At step 1032, the system determines if the profile is tobe internally stored. If the profile is not to be internally stored, theprocess proceeds directly to step 1042. If the profile is to beinternally stored, the process proceeds to step 1038, where the systemautomatically selects the CAD object file(s) as the storage destination,or the user may specify which CAD object files should contain theprofile information. In other words, the profile attributes are storedas part of the CAD document file(s). The process then proceeds to step1040 where the system stores the profile information within the selecteddocument(s). For each selected document, if the selected profile haspreviously been stored within the document, the user may be prompted toconfirm that the profile information should be changed or updated, aswell as to specify whether the profile should be completely overwrittenor if only the attributes selected for storage should be updated(allowing the user to easily update a small number of settings withouthaving to redefine the entire profile). The profile information may beencrypted and/or locked (such as with a password) to preventunauthorized or unintentional changes and/or usage. The process thenproceeds to step 1042 to determine if the profile should be externallysaved. If it is determined that the profile is not to be externallystored, the process proceeds to step 1052 and ends. If it is determinedthat the profile is to be externally stored, the system assigns a uniqueID to the profile at step 1044.

The process of FIG. 10 then proceeds to step 1046. At step 1046, thesystem determines if a dynamic link has been requested. A dynamic linkprovides a “live” uni- or bi-directional link between the document andthe stored profile, which means that if the stored profile changes (suchas by another user), the user will be (optionally) notified of thechange and (also optionally) prompted whether the changed profile shouldbe applied to the content, or if the defining aspects of the profilechange, the stored profile may be automatically updated (with or withoutprompting the user, depending on configuration options). Dynamic linksare more fully described above. If a dynamic link has not beenrequested, the process proceeds to step 1050. If a dynamic link has beenrequested, the process proceeds to step 1046 where the system internallyflags the link as a dynamic link that is accessed using the profile nameand/or identifier. At step 1050, the profile is saved to an externallocation such as a database, file system, etc. If the selected profilehas previously been stored in the external location, the user may beprompted to confirm that the profile information should be changed orupdated, as well as to determine whether the profile should becompletely overwritten or if only the attributes selected for storageshould be updated (allowing the user to easily update a small number ofsettings without having to redefine the entire profile). Tables, listsand indices are updated from the stored profile as required. As withinternal storage, the profile information may be encrypted and/or locked(such as with a password) to prevent unauthorized or unintentionalmodification and/or usage. The process then ends at step 1052.

FIG. 11 is an embodiment of a process 1100 for recalling a profile forCAD objects by selecting the CAD content, which could be one or more CADfiles, one or more CAD objects, etc. These objects could already beloaded in the system, or the process could be applied as the objects areloaded. At step 1102, the user selects the desired CAD data (the“content”). At step 1104, the system determines if the content orcontrolling environment (such as the application containing the content)is configured to “use profiles.” If the content is not programmed to usea profile at step 1104, or if the user has chosen not to “use profiles,”the process proceeds directly to step 1138 to end the process. If thecontent is programmed with an instruction to “use profiles” and thecontrolling environment is configured to “use profiles,” the processproceeds to step 1106 to determine if the content contains profiles orlinks to profiles. If the content does not contain profiles or links toprofiles, the process proceeds to step 1108. If the content does containprofiles or links to profiles, the process proceeds to step 1116 todetermine if an automatic profile selection is activated. If theautomatic profile selection is not activated, the process proceedsdirectly to step 1108. If the automatic profile selection is activated,the process proceeds to step 1118 to determine if a default profile hasbeen defined. If a default profile has not been defined, the processproceeds to step 1108. If a default profile, which may be a linkedprofile, has been defined, the process proceeds to step 1120 to activatea default profile. The process then proceeds to step 1122.

At step 1108 of FIG. 11, a profile is selected by the user. This profilemay come from a variety of sources, including internally stored profilesor externally stored profiles, such as those stored in databases, filesand other CAD objects, as well as other sources. For this example of aCAD object, a likely source would be other CAD objects. The process thenproceeds to step 1110 where the user can decide whether to apply all ofthe profile or only a portion of the profile. If the entire profile isto be applied, the process proceeds directly to step 1114. If only aportion of the profile or none of the profile is to be applied, theprocess proceeds to step 1112. At step 1112, the desired attributes ofthe profile are selected by the user. The attributes may be organizedinto multiple categories and subcategories. Categories are similar togroups as discussed above, but constitute a collection of relatedattributes. The multiple categories and subcategories allow the user to“select all” or “deselect all” for increased efficiency and flexibilitywhen configuring a profile. The selections may be persistent, i.e.,settings may be remembered between reboots/restarts, and may be storedand recalled as groups or profiles as described above.

The process of FIG. 11 then proceeds to step 1114 where the systemcreates a temporary profile based on user selections and sets theprofile active. The process then proceeds to step 1122 where the systemdetermines if an active profile has been defined. If an active profilehas not been defined, or in other words, if the temporary profile wasnot successfully created or if the default profile is not present or iscorrupted, the process proceeds directly to step 1138 and the processends. If an active profile has been defined, the process proceeds tostep 1124 to reset the current attribute pointer in the active profile.In other words, a pointer is set in the profile to point to the currentattribute in the profile. The process then proceeds to step 1126 todetermine if the current attribute is applicable and valid. Thisverification enables profiles to be applied to various types of contentthat may not be identical to the content from which the original profilewas generated, such as, in the case of a CAD profile, having a visualenvironment different from the environment in which the profile wasdefined, i.e., a different screen resolution, different objects loaded,etc. The verification operation determines if the current attribute canbe applied to the content, and if so, if the attribute data is valid forthe content. If the current attribute is applicable and valid, theprocess proceeds to step 1128 to apply the current attribute to thecontent. For the example of a CAD profile, some of the settings thatmight be adjusted could include view position, lighting/shading, zoomscale, default drawing settings, etc. The process then proceeds to step1130. If it is determined at step 1126 that the current attribute is notapplicable and valid, the process proceeds directly to step 1130. Atstep 1130, the current attribute pointer is incremented, meaning thatthe next attribute is accessed. The process then proceeds to step 1132to determine if all of the attributes have been accessed and applied tothe content. If not, the process loops back to step 1126. If all of theattributes have been processed and either applied or skipped, theprocess proceeds to step 1134 to determine if any startup attributes arepresent. If startup attributes are present, the process proceeds to step1136 to process the startup attributes which may include setting windowsize(s) and zoom scale(s), starting additional applications, etc. Theprocess then ends at step 1138. If it is determined at step 1134 thatthere are no startup attributes present, the process ends at step 1138.

An example of how the process of FIG. 11 might be used is the generationof a parts list and/or bill of material, collectively referred to asparts list, for a collection of objects in a CAD system. In this rathercommon situation, the user may desire to have a list of objectscurrently being used (such as for manufacturing purposes). Further, theuser may desire to have a picture of each object included in the list toknow what each object looks like, particularly useful for people inmanufacturing and/or purchasing roles.

Prior to generating the parts list, each the objects may have had a“preferred view” (i.e. which angle, view settings, etc should be used asa default when viewing said object) defined using a process such as theone shown in FIG. 10. The user may specify which objects should beincluded in the parts list, including selecting “All Objects.” The partslist may then be generated, either by the CAD system itself or by anadditional program or process, resulting in a list of objects, andperhaps additional information for each object such as object count,material, part number, etc. Before, during, or after the parts listgeneration, a picture, such as a screen shot or thumbnail may begenerated for each object, with the picture using the preferred view forthat object. If no valid preferred view is available for said object,such as if one was never stored, or the data has become corrupted, thepreferred view of the parent object, if applicable, may be used,depending on system configuration and/or which options are set.Additionally, this option to use the preferred view of the parent objectmay be extended to include additional levels all the way up to thetop-level object(s), if desired. In some instances, the user may specifyhow many levels to search, i.e., 2 levels would include the parentobject and the grandparent object or the parent's parent. Further, if nopreferred view is available for the object or its parents, the picturemay be generated using a user-specified default view, the system defaultview, or no picture at all, depending on configuration options.

The pictures generated for each object may then be included in the partslist, such as in a document where each object is next to or referencesits associated picture, with the pictures embedded within the document.Further, if the type of parts list does not provide a means to embed thepictures, the pictures may be delivered either together with the partslist or separately, using any means desired, whether electronic orotherwise.

FIG. 12 is an embodiment of a process 1200 for recalling a CAD profileby selecting the profile. At step 1202, the profile is selected. Theprocess then proceeds to step 1204 to determine if a CAD object orobjects (i.e. “content source”) has been defined. If the content sourcehas been defined, the process proceeds to step 1208. If the contentsource has not been defined, the process proceeds to step 1206 tospecify the content source such as a CAD object or objects (which may ormay not already be loaded). At step 1208, content is loaded from theselected source, if necessary. The process then proceeds to step 1210 todetermine if the entire profile should be applied to the content. If so,the process proceeds directly to step 1214. If the entire profile is notto be applied to the content, the process proceeds to step 1212 wherethe user selects attributes of the selected profile to be applied to thecontent. The user may use categories and subcategories each of which mayhave a “select all” and a “deselect all” to increase efficiency andflexibility, and to simplify the selection process. The selections maybe persistent and may be stored and recalled as groups or profiles asdefined previously. The process then proceeds to step 1214 where thesystem creates a temporary profile using the selections of the user andsets the temporary profile active. The process then proceeds to step1216 where the system determines if an active profile has been defined.If an active profile has not been defined, or in other words, if thetemporary profile was not successfully created (such as if the profiledata is corrupted), the process proceeds to step 1232 and ends. If it isdetermined at step 1216 that an active profile has been defined, theprocess proceeds to step 1218 where the system resets the currentattribute pointer in the active profile. The process then proceeds tostep 1220 to determine if the current attribute is applicable and valid.This verification enables profiles to be applied to various types ofcontent that may not be identical to the content from which the originalprofile was generated, as described above. The verification operationdetermines if the current attribute can be applied to the content, andif so, if the attribute data is valid for the content. If the currentattribute is not applicable and valid, such as an attribute to start anapplication that is not installed on the destination computer, theprocess proceeds to step 1224. If the current attribute is applicableand valid, the process proceeds to step 1222 where the current attributeis applied to the content. For the example of a CAD profile, some of thesettings that might be adjusted could include view position,lighting/shading, zoom scale, default drawing settings, etc. The processthen proceeds to step 1224. At step 1224, the current attribute pointeris incremented, meaning that the next attribute is accessed. At step1226, it is determined if all of the attributes have been processed. Ifnot, the process loops back to step 1220. If all of the attributes havebeen processed and either applied to the content or skipped, the processproceeds to step 1228 to determine if any startup attributes arepresent. If no startup attributes are present, the process ends at step1232. If startup attributes are present, the process proceeds to step1230 where the system processes the startup attributes. The startupattributes for a CAD profile could include setting window size(s) andzoom scale(s), starting additional applications, etc. The process thenends at step 1232.

FIG. 13 is an embodiment of a process 1300 for obtaining a profile fromone source and applying it to data or content from a separate source. Atstep 1302, the user creates or obtains the content from the desiredsource (for example, the user might open a Word document). After step1302 is complete, the process may proceed to either step 1304 or 1310.If the user proceeds to step 1304, the user may then select the desiredportion of the content (which may include the entire content) to whichthe profile will be applied. The process then proceeds to step 1306where the user requests the controller to recall or apply a profile. Theprocess then proceeds to step 1308, where the user selects a profilefrom another source (such as another Word document or a profile storedin some other external location). The process then proceeds to step1316. Alternatively, after step 1302, the user may proceed to step 1310.At step 1310, the user requests the controller to recall or apply aprofile. The process then proceeds to step 1312 where the user selects aprofile from another source (such as another Word document or a profilestored in an external location). The process then proceeds to step 1314where the user specifies the portion of the content (possibly the entirecontent) to which the profile will be applied. The process then proceedsto step 1316.

At step 1316 of FIG. 13, the user chooses whether to apply all elementsof the profile to the selected portion of the content. If the entireprofile is to be applied, the process proceeds directly to step 1320. Ifonly a portion or the profile (including none of the profile) is to beapplied, the process proceeds to step 1318. At step 1318, the userspecifies which attributes are to be applied to the content. Theattributes may be organized into multiple categories and subcategories.Categories are similar to groups as discussed above, but constitute acollection of related attributes. The multiple categories andsubcategories allow the user to “select all” or “deselect all” forincreased efficiency and flexibility when configuring a profile. Theselections may be persistent, i.e., settings may be remembered betweenreboots/restarts, and may be stored and recalled as groups or profilesas described above.

The process of FIG. 13 then proceeds to step 1320 where the systemcreates a temporary profile based on user selections and sets theprofile active. The process then proceeds to step 1322 where the systemdetermines if an active profile has been defined. If an active profilehas not been defined, or in other words, if the temporary profile wasnot successfully created or is corrupted, the process proceeds directlyto step 1338 and the process ends. If an active profile has beendefined, the process proceeds to step 1324 to reset the currentattribute pointer in the active profile. In other words, a pointer isset in the profile to point to the current attribute in the profile. Theprocess then proceeds to step 1326 to determine if the current attributeis applicable and valid. This verification enables profiles to beapplied to various types of content that may not be identical to thecontent from which the original profile was generated, such as recallinga Word document profile on a computer different from the computer onwhich the profile was defined, i.e., there may be different fontsinstalled, etc. The verification operation determines if the currentattribute can be applied to the content, and if so, if the attributedata is valid for the content. If the current attribute is applicableand valid, the process proceeds to step 1328 to apply the currentattribute to the content. The process then proceeds to step 1330. If itis determined at step 1326 that the current attribute is not applicableand valid, such as an attribute for a font that is not installed on thecurrent computer, the process proceeds directly to step 1330. At step1330, the current attribute pointer is incremented, meaning that thenext attribute is accessed. The process then proceeds to step 1332 todetermine if all of the attributes have been accessed and applied to thecontent. If not, the process loops back to step 1326. If all of theattributes have been processed and either applied or skipped, theprocess proceeds to step 1334 to determine if any startup attributes arepresent. If startup attributes are present, the process proceeds to step1336 to process the startup attributes which may include startingadditional applications, etc. The process then ends at step 1338. If itis determined at step 1334 that there are no startup attributes present,the process ends at step 1338.

FIG. 14 illustrates an embodiment of a process 1400 for creating a newprofile for an operating system user configuration. This type of profilecan apply to any operating system and device combination, includingcomputer desktops, portable computing and/or media devices, automobilecontrollers, building management systems, digital video recordingdevices, etc. This type of profile can store the entire environment,including (if applicable) security settings, screen resolution,brightness, power settings, screensaver settings, shortcuts, desktoplayout, open applications, application settings for applications, etc.This will allow the user to re-create the desired environment veryquickly and easily. At step 1402, the user creates and/or obtains thecontent environment (such as logging on to the system). At step 1404,the user configures the attributes of the operating system andenvironment as listed above. After step 1404, the process can eitherproceed to step 1406 or step 1410. If the process proceeds to step 1406,the user selects content from which to create a profile. The contentcould be the entire environment (open applications, power settings,etc.—virtually the entire configuration) or only selected portions (suchas only screen and power settings). The process then proceeds to step1408 where the user requests the controller to define a profile.Alternatively, rather than proceeding to step 1406, the process canproceed to step 1410 where the user requests the controller to define aprofile. The process then proceeds to step 1412 to select the contentfrom which to create the profile. As before, this could be the entireenvironment or only selected portions. If the user desires to create ageneric profile without selecting specific content, the user mayeffectively skip step 1412 by not selecting any content. The processthen may optionally proceed to step 1414 to select a name for theprofile and, if desired, a description of the profile. The process thenproceeds to step 1416 where the user selects attributes of the contentto be stored for future use. These attributes may be provided incategories and subcategories, each of which may include an option to“select all” or “deselect all.” The selection of attributes may bepersistent, i.e., remembered between reboots/restarts, and may be storedand recalled as groups or profiles. In the case of a desktop operatingsystem configuration, the user would typically select items incategories dealing with power settings, security settings, windowconfiguration and sizes, document positions, zoom scales (perhaps on aper-window basis), network settings, printer settings, etc., as well asany other desired attributes. The process may then optionally proceed tostep 1418 to define the profile type to store. Again, the profile typesare defined by the user. For example, one or more profiles may havealready been created and stored in the system. As described in FIG. 1B,a user or multiple users may have multiple profiles which can beclassified into profile types. The creation of profile types and the useof these profile types is described above with respect to FIG. 1B.

The process of FIG. 14 then proceeds to step 1420 where the user isprompted to save the profile. At step 1422, it is determined whether aprofile name has been defined. If not, the user defines a profile nameand (optional) description at step 1424. If a profile name has beendefined, the process proceeds directly to step 1426. At step 1426 ofFIG. 14, the user defines the storage type or types for the profile. Forexample, the profile may be stored internally in the operating system'ssettings and may be retrieved when the operating system loads or theuser logs in. Further, the profile may be stored in an external file.Still further, the profile may be stored in an external database, asdescribed above, with respect to FIG. 1A. The process then proceeds tostep 1428 where the user accepts storage of the profile or cancels thatstorage. If the user cancels storage, the process ends at step 1450. Ifthe user accepts the storage of the profile, as defined in step 1426,the process proceeds to step 1432. At step 1432, it is determinedwhether the profile should be set as the default profile. If the profileshould not be set as the default profile, the process then proceedsdirectly to step 1430. If the profile is to be set as the defaultprofile, the process proceeds to step 1434 to flag the profile as thedefault profile. This indicator of which profile is the default profilemay be stored with the content. If a default profile is already defined,the user may (optionally, depending on configuration options) beprompted to confirm that the new profile should become the defaultprofile, in which case the profile that was previously the defaultprofile will no longer be the default profile. The process then proceedsto step 1430. At step 1430, the system determines if the profile is tobe internally stored. If the profile is not to be internally stored, theprocess proceeds to directly to step 1440. If the profile is to beinternally stored, the process proceeds to step 1436, where the systemautomatically selects the operating system as the storage destination.In other words, the profile attributes are stored as part of thesettings of the operating system. The process then proceeds to step 1438where the system stores the profile information within the settings ofthe operating system. If the selected profile has previously been storedwithin the settings of the operating system, the user may be prompted toconfirm that the profile information should be changed or updated, aswell as to specify whether the profile should be completely overwrittenor if only the attributes selected for storage should be updated(allowing the user to easily update a small number of settings withouthaving to redefine the entire profile). The profile information may beencrypted and/or locked (such as with a password) to preventunauthorized or unintentional changes and/or usage. The process thenproceeds to step 1440 to determine if the profile should be externallystored. If it is determined that the profile is not to be externallystored, the process proceeds to step 1450 and ends. If it is determinedthat the profile is to be externally stored, the system assigns a uniqueID to the profile at step 1442.

The process of FIG. 14 then proceeds to step 1444. At step 1444, thesystem determines if a dynamic link has been requested. A dynamic linkprovides a “live” uni- or bi-directional link between the document andthe stored profile, which means that if the stored profile changes (suchas by another user), the user will be (optionally) notified of thechange and (also optionally) prompted whether the changed profile shouldbe applied to the content, or if the defining aspects of the profilechange, the stored profile may be automatically updated (with or withoutprompting the user, depending on configuration options). Dynamic linksare more fully described above. If a dynamic link has not beenrequested, the process proceeds to step 1448. If a dynamic link has beenrequested, the process proceeds to step 1446 where the system internallyflags the link as a dynamic link that is accessed using the profile nameand/or identifier. At step 1448, the profile is saved to an externallocation such as a database, file system, etc. If the selected profilehas previously been stored in the external location, the user may beprompted to confirm that the profile information should be changed orupdated, as well as to determine whether the profile should becompletely overwritten or if only the attributes selected for storageshould be updated (allowing the user to easily update a small number ofsettings without having to redefine the entire profile). Tables, listsand indices are updated from the stored profile as required. As withinternal storage, the profile information may be encrypted and/or locked(such as with a password) to prevent unauthorized or unintentionalmodification and/or usage. The process then ends at step 1450.

FIG. 15 illustrates an embodiment of a process 1500 for creating a newprofile for a vehicle based on driver preferences. This type of profilecan apply to any vehicle, including automobiles, trucks, buses,motorcycles, airplanes, etc. This type of profile can store the entireenvironment, including (if applicable) climate control, seat positionsand settings, audio system settings and presets, engine performancesettings, navigation system settings, mirror settings, etc. This willallow the user to re-create the desired environment very quickly andeasily. At step 1502, the user creates and/or obtains the contentenvironment (such as getting into the vehicle). At step 1504, the userconfigures the attributes of the content as listed above. After step1504, the process can either proceed to step 1506 or step 1510. If theprocess proceeds to step 1506, the user selects content from which tocreate a profile. The content could be the entire environment or onlyselected portions (such as only audio system settings). The process thenproceeds to step 1508 where the user requests the controller to define aprofile. Alternatively, rather than proceeding to step 1506, the processcan proceed to step 1510 where the user requests the controller todefine a profile. The process then proceeds to step 1512 to select thecontent from which to create the profile. As before, this could be theentire environment or only selected portions. If the user desires tocreate a generic profile without selecting specific content, the usermay effectively skip step 1512 by not selecting any content. The processthen may optionally proceed to step 1514 to select a name for theprofile and, if desired, a description of the profile. The process thenproceeds to step 1516 where the user selects attributes of the contentto be stored for future use. These attributes may be provided incategories and subcategories, each of which may include an option to“select all” or “deselect all.” The selection of attributes may bepersistent, i.e., remembered between reboots/restarts and/or differentdrivers/operators, and may be stored and recalled as groups or profiles.In the case of an automobile profile, the user would typically selectitems in categories dealing with audio settings, engine performancesettings, seat and mirror positions, etc., as well as any other desiredattributes. The process may then optionally proceed to step 1518 todefine the profile type to store. Again, the profile types are definedby the user. For example, one or more profiles may have already beencreated and stored in the system. As described in FIG. 1B, a user ormultiple users may have multiple profiles which can be classified intoprofile types. The creation of profile types and the use of theseprofile types are described above with respect to FIG. 1B.

The process of FIG. 15 then proceeds to step 1520 where the user isprompted to save the profile. At step 1422, it is determined whether aprofile name has been defined. If not, the user defines a profile nameand (optional) description at step 1524. If a profile name has beendefined, the process proceeds directly to step 1526. At step 1526 ofFIG. 15, the user defines the storage type or types for the profile. Forexample, the profile may be stored internally in the vehicle's internalengine computer settings and may be retrieved when the car is started orwhen the driver provides identification. Further, the profile may bestored in an external file, perhaps on a USB drive. Still further, theprofile may be stored in an external database, as described above, withrespect to FIG. 1A. This database may be located in a locationgeographically separate from the vehicle, and may be accessed via awireless network, for instance. The process then proceeds to step 1528where the user accepts storage of the profile or cancels that storage.If the user cancels storage, the process ends at step 1550. If the useraccepts the storage of the profile, as the user defines that storage instep 1526, the process proceeds to step 1532. At step 1532, it isdetermined whether the profile should be set as the default profile. Ifthe profile should not be set as the default profile, the process thenproceeds directly to step 1530. If the profile is to be set as thedefault profile, the process proceeds to step 1534 to flag the profileas the default profile. This indicator of which profile is the defaultprofile may be stored with the content. If a default profile is alreadydefined, the user may (optionally, depending on configuration options)be prompted to confirm that the new profile should become the defaultprofile, in which case the profile that was previously the defaultprofile will no longer be the default profile. The process then proceedsto step 1530. At step 1530, the system determines if the profile is tobe internally stored. If the profile is not to be internally stored, theprocess proceeds to directly to step 1540. If the profile is to beinternally stored, the process proceeds to step 1536, where the systemautomatically selects the vehicle engine computer as the storagedestination. In other words, the profile attributes are stored as partof the vehicle's settings. The process then proceeds to step 1538 wherethe system stores the profile information within the vehicle enginecomputer. If the selected profile has previously been stored within thevehicle engine computer, the user may be prompted to confirm that theprofile information should be changed or updated, as well as to specifywhether the profile should be completely overwritten or if only theattributes selected for storage should be updated (allowing the user toeasily update a small number of settings without having to redefine theentire profile). The profile information may be encrypted and/or locked(such as with a password) to prevent unauthorized or unintentionalchanges and/or usage. The process then proceeds to step 1540 todetermine if the profile should be externally stored. If it isdetermined that the profile is not to be externally stored, the processproceeds to step 1550 and ends. If it is determined that the profile isto be externally stored, the system assigns a unique ID to the profileat step 1542.

The process of FIG. 15 then proceeds to step 1544. At step 1544, thesystem determines if a dynamic link has been requested. A dynamic linkprovides a “live” uni- or bi-directional link between the document andthe stored profile, which means that if the stored profile changes (suchas by another user), the user will be (optionally) notified of thechange and (also optionally) prompted whether the changed profile shouldbe applied to the content, or if the defining aspects of the profilechange, the stored profile may be automatically updated (with or withoutprompting the user, depending on configuration options). Dynamic linksare more fully described above. If a dynamic link has not beenrequested, the process proceeds to step 1548. If a dynamic link has beenrequested, the process proceeds to step 1546 where the system internallyflags the link as a dynamic link that is accessed using the profile nameand/or identifier. At step 1548, the profile is saved to an externallocation such as a database, file system, etc. If the selected profilehas previously been stored in the external location, the user may beprompted to confirm that the profile information should be changed orupdated, as well as to determine whether the profile should becompletely overwritten or if only the attributes selected for storageshould be updated (allowing the user to easily update a small number ofsettings without having to redefine the entire profile). Tables, listsand indices are updated from the stored profile as required. As withinternal storage, the profile information may be encrypted and/or locked(such as with a password) to prevent unauthorized or unintentionalmodification and/or usage. The process then ends at step 1550.

FIG. 16A illustrates an embodiment of a process 1600 for using anintermediate user interface (UI) to define and/or store multipleprofiles. This type of interface could be used in many situations,including, for example, a CAD software package. In such an interface,the profile data may be temporarily maintained in memory (includingvolatile or non-volatile RAM, disk memory, etc.) or in another locationprior to being stored in a more permanent location (such as with a dataobject or data file or in external storage as previously disclosed). Adetailed view 1640 of such an intermediate UI is shown in FIG. 16B. Thedetailed view 1640 illustrates buttons 1642, 1644, and 1646 representingmultiple storage locations, each with two indicators to identify if saidstorage location contains data and if said data is “current,” i.e., ifthe stored data matches the current settings (whether user-specified orsystem-specified). These indicators are represented respectively byitems 1648 and 1650 for storage location 0 and 1652 and 1654 for storagelocation 1. Of course, each pair of indicators could also be replaced byother indicators, including a single multi-color indicator, such as onethat is grey or white when its associated storage location is empty,which changes to green when its associated storage location contains aprofile, and which changes to red if the profile in its associatedstorage location matches the current settings. Clicking the buttons canautomatically recall and apply (as previously disclosed) the profiledata stored in the associated storage location. Button 1642,representing storage location 0, is a different color to indicate the“default profile” as described above, i.e., in this embodiment, anyprofile stored in position 0 will be assigned as a default profile whenthe profile data stored in the UI is attached to an object or otherwisestored. Further, if profile data is read from any profile data source,and the profile data contains a default profile, this default profilewill be loaded into position 0. UI 1640 also contains a popup menu 1656that can be displayed when the user clicks on a menu item or button(including right-clicking on one of the buttons, for example button1646). Popup menu 1656 contains menu items (Define) 1658, (Clear) 1660,(Load) 1662, (Attach) 1664, (Edit) 1666, and (Detach) 1668, as well asany other menu items that may be appropriate, including items such as“Recall,” etc. Such menu items (i.e. “Attach”) may be used to initiatefunctions that will store the profile information in a more permanentmanner (including storing multiple profiles simultaneously), as detailedabove in the description of the various profile creation processes.

The process of FIG. 16A begins at step 1602, where the user configuresthe content. In the case of a CAD package, the user can adjust thelighting, shading, zoom scale, viewpoint, visible objects, etc. Theindicators in the intermediate UI 1630 show that no profiles are storedin any of the 5 storage locations (numbered 0 through 4), and that noneof the storage locations is current, which is the case with no storedprofiles. The process then proceeds to step 1604, where the userrequests the system to define a profile. This is accomplished via thesample UI by right-clicking on the button for storage location 0 andselecting “Define” from the popup menu. The process then proceeds tostep 1606 where the system checks to see if any selection options havebeen defined previously, i.e., if a pre-defined set of attributes existsthat will determine what will be contained in newly-defined profiles. Ifselection options have been defined the process proceeds to step 1610where the system determines if the user has requested a manual overrideof the selection options. If the user has not requested a manualoverride, the process proceeds directly to step 1612. If at step 1606 itis determined that no selection options have been defined, or if at step1610 the user has chosen to override the default selection options, theprocess proceeds to step 1608. At step 1608, the user selects attributesof the content to be stored for future use. These attributes may beprovided in categories and subcategories, each of which may include anoption to “select all” or “deselect all.” The selection of attributesmay be persistent, i.e., remembered between reboots/restarts, and may bestored and recalled as groups or profiles. The process then proceeds tostep 1612. At step 1612, if profile data already exists in the selectedstorage location, the user may be prompted whether to overwrite theexisting data. The user may choose not to overwrite the existing data ifit has not already been stored in a non-volatile location. If the userchooses to overwrite the existing data, or if no profile data is presentin the selected storage location, the data is stored internally in thelocation from which the user initiated the “Define” operation (in thiscase, location 0). After step 1612, the indicators in intermediate UI1632 show that location 0 has a profile defined and that said profile iscurrent, and that locations 1 through 4 are still empty.

The process of FIG. 16A then proceeds to step 1614 where the userre-configures the content. As before, in the case of a CAD package, theuser could adjust the lighting, shading, zoom scale, viewpoint, visibleobjects, etc. As the settings change, if the stored profile no longermatches the current settings, the “current” indicator in theintermediate UI 1634 turns off. The process then proceeds to step 1616,where the user again requests the system to define a profile. As before,this is done via a right-click on the button representing the desiredstorage location and selecting “Define” from the popup menu, though inthis case the user selects location 2 as the desired storage location(leaving location 1 empty). The process then proceeds to step 1618 wherethe system checks to see if any selection options have been defined. Ifselection options have been defined the process proceeds to step 1622where the system determines if the user has requested a manual overrideof the selection options. If the user has not requested a manualoverride, the process proceeds directly to step 1624. If at step 1618 itis determined that no selection options have been defined, or if at step1622 the user has chosen to override the default selection options, theprocess proceeds to step 1620. At step 1620 the user selects attributesof the content to be stored for future use. These attributes may beprovided in categories and subcategories, each of which may include anoption to “select all” or “deselect all.” The selection of attributesmay be persistent, i.e., remembered between reboots/restarts, and may bestored and recalled as groups or profiles. The process then proceeds tostep 1624. At step 1624, if profile data already exists in the selectedstorage location, the user may be prompted whether to overwrite theexisting data. If the user chooses to overwrite the existing data, or ifno profile data is present in the selected storage location, the data isstored internally in the location from which the user initiated the“Define” operation (location 2 in this case). After step 1624, theindicators in intermediate UI 1636 show that locations 0 and 2 each havea profile defined and that the profile stored in location 2 is current,and that locations 1, 3 and 4 are still empty. The process then proceedsto step 1626 and ends.

FIG. 17 illustrates an embodiment of a process 1700 for using anintermediate user interface (UI) to recall a profile. As detailedpreviously, this type of interface can be used in many situations,including, for example, a CAD software package. Using the interface, theprofile data may be temporarily maintained in memory (including volatileor non-volatile RAM, disk memory, etc.) prior to being stored in a morepermanent location, such as with a data object or data file or inexternal storage as previously disclosed. Further, the profile data maybe either created by the user or loaded from a profile source includingboth internal and external data sources. An example of such anintermediate UI is shown in FIG. 16B and is detailed above.

As the process of FIG. 17 begins, the indicators in intermediate UI 1720show that locations 1, 3, and 4 are empty, and that locations 0 and 2each have a profile defined, with the profile in location 2 marked ascurrent, meaning that the settings of the profile stored in location 2match the current settings. At step 1702, the user requests the systemto recall the profile stored in location 0. This may be done in multipleways. Using the UI illustrated in FIG. 16B, this is accomplished bysimply clicking on the button representing storage location 0. If thepopup menu 1656 in FIG. 16B contains an option to “Recall” a profile,the user can also right-click on the button representing storagelocation 0 and select “Recall” from the popup menu. The process thenproceeds to step 1704 where the system checks to see if any selectionoptions have been defined. If selection options have been defined theprocess proceeds to step 1708 where the system determines if the userhas requested a manual override of the selection options. If the userhas not requested a manual override, the process proceeds directly tostep 1710. If at step 1704 it is determined that no selection optionshave been defined, or if at step 1708 the user has chosen to overridethe default selection options, the process proceeds to step 1706. Atstep 1706 the user selects attributes of the content to be recalled.These attributes may be provided in categories and subcategories, eachof which may include an option to “select all” or “deselect all.” Theselection of attributes may be persistent, i.e., remembered betweenreboots/restarts, and may be stored and recalled as groups or profiles.The process then proceeds to step 1710, where the system recalls theprofile data from storage location 0 and applies it to the currentsettings based on the user's selection options. The indicators inintermediate UI 1722 will then indicate that storage locations 1, 3, and4 are still empty, that storage locations 0 and 2 contain profile data,and that the profile stored in location 0 is current. It is important tonote that when a profile is recalled, if the selection options result inthe entire profile not being applied, the “current” indicator for thechosen location may not be activated since the stored settings may notmatch the current settings. The process then proceeds to step 1712 andends.

FIG. 18 illustrates an embodiment of a process 1800 for using theinvention via an intermediate user interface (UI) to remove a storedprofile from the intermediate UI. As detailed previously, this type ofinterface can be used in many situations, including, for example, a CADsoftware package. In such an interface, the profile data may betemporarily maintained in memory (including volatile or non-volatileRAM, disk memory, etc.) prior to being stored in a more permanentlocation, such as with a data object or data file or in external storageas previously disclosed. Further, the profile data may be either createdby the user or loaded from a profile source including both internal andexternal data sources. An example of such an intermediate UI is shown inFIG. 16B and is detailed above.

As the process of FIG. 18 begins, the indicators in intermediate UI 1820show that locations 1, 3, and 4 are empty, and that locations 0 and 2each have a profile defined, with the profile in location 2 marked ascurrent, meaning that the settings of the profile stored in location 2match the current settings. At step 1802, the user requests the systemto clear the profile stored in location 2. This may be done in multipleways. Using the UI of FIG. 16B, this is accomplished by simplyright-clicking on the button representing storage location 2 andselecting “Clear” from the popup menu. The process then proceeds to step1804 where the system may optionally (based on configuration options)prompt the user to confirm deletion of the profile data. If the userconfirms deletion of the profile, or if the system is configured not toconfirm profile deletion, the process proceeds to step 1806, where thedata stored in location 2 is deleted. At this point, the indicators inintermediate UI 1822 show that storage locations 1 through 4 are nowempty, and that only location 0 contains profile data. The profilestored in location 0 is not current, however as no action was taken torecall/apply this profile. The process then proceeds to step 1810 andends. If the user does not confirm deletion of the profile, the processproceeds to step 1808 where the process ends with no action taken. Inthis case, since no action was taken, the indicators in intermediate UI1824 are unchanged from those in intermediate UI 1820 as describedabove.

FIG. 19 illustrates an embodiment of a process 1900 for loading one ormore profiles into an intermediate user interface (UI) for profilemanagement. As detailed previously, this type of interface could be usedin many situations, including, for example, a CAD software package. Insuch an interface, the profile data may be temporarily maintained inmemory (including volatile or non-volatile RAM, disk memory, etc.) priorto being stored in a more permanent location, such as with a data objector data file or in external storage as previously disclosed. Further,said profile data may be either created by the user or loaded from aprofile source including both internal and external data sources. Anexample of such an intermediate UI is shown in FIG. 16B and is detailedabove.

As the process of FIG. 19 begins, the indicators in intermediate UI 1940show that locations 1, 3, and 4 are empty, and that locations 0 and 2each have a profile defined, with the profile in location 2 marked ascurrent, meaning that the settings of the profile stored in location 2match the current settings. At step 1902, the user requests the systemto load profiles from an internal or external source. This may be donein multiple ways. In the sample UI of FIG. 16B, this is accomplished bysimply right-clicking on any of the buttons representing storagelocations and clicking “Load” from the popup menu. The process thenproceeds to step 1904 where the user specifies the source(s) from whichto load the profile(s). The process then proceeds to step 1906 where thesystem checks to see if the user has chosen to load all data from allprofiles. If the user has chosen to load all data from all profiles, theprocess proceeds directly to step 1910. If the user has chosen not toload all data from all profiles, the process proceeds to step 1908. Atstep 1910, the system determines if the user has requested a manualoverride of the load and selection options. If the user has notrequested a manual override, the process proceeds directly to step 1912.If at step 1906 it is determined that the user does not wish to load alldata from all profiles, or if at step 1910 the system determines thatthe user has chosen to override the default selection options, theprocess proceeds to step 1908. At step 1908 the user selects whichprofiles from the selected source(s) to load, as well as which of thestored profile attributes should be loaded. These attributes may beprovided in categories and subcategories, each of which may include anoption to “select all” or “deselect all.” The selection of attributesmay be persistent, i.e. remembered between reboots/restarts, and may bestored and recalled as groups or profiles. The process then proceeds tostep 1912. At step 1912, the system determines if any of the storagelocations are currently storing profile data. If so, the processproceeds to step 1914 where the user is optionally (based onconfiguration options) prompted to confirm that the new profile datashould be loaded, and may also be prompted (again, based onconfiguration options) as to whether the new profile data should replacethe existing profile data or be added to it. If the user does notconfirm that the new profile data should be loaded, the process proceedsto step 1916 and ends, in which case the indicators in intermediate UI1942 are unchanged from those in intermediate UI 1940, as describedabove. If the user confirms that the new data should be loaded, theprocess proceeds to step 1918 where the selected profile(s) are loadedfrom the selected source(s), either replacing the existing profile dataor being added to the existing profile data, possibly as additionalprofiles. In this example, the user has chosen a profile sourcecontaining 4 profiles, and these profiles are loaded into storagelocations 0 through 3, though the locations may vary depending onconfiguration options. For example, if none of the 4 profiles was markedas a default profile, the profile data might be loaded into storagelocations 1 through 4, reserving location 0 for a default profile. Theprocess then proceeds to step 1920 where the system checks to see if adefault profile has been loaded, which in this example would be loadedinto storage location 0. If a default profile is present, the processproceeds to step 1922 where the system checks to see if the systemconfiguration is set to use the default profile. If the system is set upto use the default profile, the process proceeds to step 1924 where thedefault profile is recalled and applied as previously disclosed. Theprocess then proceeds to step 1926 and the process ends. The indicatorsin intermediate UI 1944 will then indicate the status of the new profileinformation, which in this case shows that storage locations 0 through 3contain profile data, and storage location 4 is empty, with the defaultprofile (stored in location 0) currently active. If the system is notset up to use a default profile, the process proceeds to step 1928 andthe process ends. The indicators in intermediate UI 1946 will thenindicate the status of the new profile information, which in this caseshows that storage locations 0 through 3 contain profile data, andstorage location 4 is empty, with no profile currently active. If, atstep 1920, a default profile is not present, such as if none of theloaded profiles was marked as a default profile, the process proceeds tostep 1930 and the process ends. The indicators in intermediate UI 1948will then indicate the status of the new profile information, which inthis case shows that storage location 0 (the default profile) is empty,and storage locations 1 through 4 contain profile data, with no profilecurrently active.

FIG. 20A illustrates an embodiment of a process 2000 for using anenhanced intermediate user interface (UI) to define and work withmultiple sets of profiles. This type of interface could be used in manysituations, including, for example, a CAD software package. In such aninterface, the sets of profile data may be temporarily maintained inmemory, including volatile or non-volatile RAM, disk memory, etc., priorto being stored in a more permanent location, such as with a data objector data file or in external storage as previously disclosed. An exampleof such an intermediate UI is shown in FIG. 20B. This UI is very similarto the UI detailed in FIG. 16B, with the addition of components tofacilitate working with multiple sets of profile data. This sample UIcomprises buttons representing multiple storage locations (representedby buttons 2062, 2064, 2066, 2068, and 2070), each with two indicatorsto identify if said storage location contains data and if said data is“current,” i.e., if the stored data matches the current settings(whether user-specified or system-specified). These indicators arerepresented respectively by items 2080 and 2082 for storage location 4,with corresponding indicators for each of the other storage locations.Of course, each pair of indicators could also be replaced by otherindicators, including a single multi-color indicator as previouslydescribed. Clicking any of the buttons representing the storagelocations automatically recalls and applies the profile data stored inthe associated storage location. Button 2062, representing storagelocation 0, is a different color to indicate the “default profile” asdescribed above. This UI also may contain a popup menu similar in formand function to menu 1656 shown in FIG. 16B and discussed previously.Such a menu can be used to initiate functions to work with and modifyprofile information, including loading and storing multiple profilessimultaneously as disclosed previously.

The UI shown in FIG. 20B also contains buttons 2072, 2074, and 2078, aswell as position indicator 2076. These UI elements allow use of multiplesets of profile data. In this embodiment, the sets of profile data maybe accessed as a list, with each set of profile data as one element ofthe list. Further, each set of profile data may have its own “top-level”profile that may be associated with each of its data components asdetailed below. Button 2072 may be used to create a new set of profiledata (i.e. a new item in the list), and buttons 2074 “Previous” and 2078“Next” may be used to move to the previous or next items in the list,respectively, functioning similarly to the “Back” and “Forward” buttonsthat are commonly found in web browsing applications. When no sets ofprofile data are defined, the “Back” and “Forward” buttons 2074 and 2078may be disabled, just as the “Back” button 2074 may be disabled when thecurrent set of profile data is at the beginning of the list, and the“Forward” button 2078 may be disabled when the current set of profiledata is at the end of the list. Position indicator 2076 shows thecurrent position of the “active” set of profile data in the list, andmay also show the total number of sets of profile data in the list.Buttons 2074 and 2078 and position indicator 2076 each provides amethod, via a popup or pulldown menu to facilitate direct access to setsof profile data located at any position in the list. Button 2072automatically creates a new set of profile data when clicked, and mayalso have an associated menu such as item 2090, which can provide aninterface to operations which may include: adding a new set of profiledata, deleting a set of profile data, attaching or detaching one or moresets of profile data (such as for storage purposes) to one or moreobjects, updating the “top-level” profile, etc. When adding a new set ofprofile data, the user may specify whether to replace an existing set ofprofile data or to add the set of profile data to the list. If the newset of profile data is to be added to the list, the location in which itis added may be determined by configuration options, determined by theuser's selections, etc.

As the process of FIG. 20A begins, the indicators in intermediate UI2050 show that all storage locations 0 through 4 are empty, and the“0/0” in the position indicator shows that no sets of profile data havebeen defined. In an alternative embodiment, this “empty set” may beconsidered as the first set in the list, i.e., the position indicatormay show “1/1” even with no profile sets defined (since the user maydefine profiles, which would be part of the current set). The process ofFIG. 20A begins at step 2002, where the user requests the system tocreate a new set of profile data by clicking on the “Sets” button. Theprocess then proceeds to step 2004, where the user may optionallyspecify what will be included in the top-level profile for the new setof profile data. In the case of a CAD package, the user might specifywhich objects are visible on the screen, etc. The process then proceedsto step 2006, where the system creates a new set of empty profile data,makes the newly created set active, and creates (if specified) thetop-level profile for the newly created set of profile data. After step2006, the position indicator shows “1/1” in intermediate UI 2052,meaning that the current set of profile data is in position 1 and thatthe total number of sets is 1. Also, intermediate UI 2052 shows thatstorage locations 0 through 4 are empty, i.e., no profiles have beendefined for the current (in this case newly-defined) set of profiledata. The process then proceeds to step 2008, where the systemdetermines if the components of the top-level profile contain profilesor links to profiles. If these components do not contain profiles orlinks to profiles, the process proceeds directly to step 2020. If thecomponents contain profiles or links to profiles, the process proceedsto step 2010. At step 2010, if the system is not configured toautomatically load profiles, the process proceeds directly to step 2020,otherwise the process proceeds to step 2012. At step 2012, the systemreads the profiles as specified by the top-level profile components, andloads them into the appropriate storage locations for the newly definedprofile set. The process then proceeds to step 2014. At step 2014, if adefault profile is not defined, the process proceeds directly to step2020, otherwise the process proceeds to step 2016. At step 2016, if thesystem is not configured to use the default profile, the processproceeds directly to step 2020, otherwise the process proceeds to step2018. At step 2018, the default profile (which would be stored inlocation 0 in this example) is applied to the content, and the processproceeds to step 2020. In this case, if no profiles were loaded from thetop-level profile components, the intermediate UI 2054 remains unchangedfrom item 2052 since no changes were made to the set of profile data.

At step 2020, the user may re-configure the content and create one ormore new profiles using a process similar to process 1600 as disclosedabove. After these profile definitions are complete, intermediate UI2056 shows that the current set of profile data is still the only one(“1/1”), that storage locations 3 and 4 are still empty, and that in thecurrent profile set, profiles have been defined for storage locations 0,1, and 2, and that the profile in location 2 is now current.

The process of FIG. 20A then proceeds to step 2022, where the user againrequests the system to create a new set of profile data by clicking onthe “Sets” button. The process then continues to step 2024, where theuser may optionally specify what will be included in the top-levelprofile for the new set of profile data. As before, in the case of a CADpackage, the user might specify which objects are visible on the screen(such as a different set of objects than was specified for the previousset), etc. The process then proceeds to step 2026, where the systemcreates a new set of empty profile data, makes the newly created setactive, and creates (if specified) the top-level profile for the newlycreated set of profile data. After step 2026, intermediate UI 2058 showsthat the current set of profile data is in position 2 out of a total of2 sets, and that all of the storage locations for the current set ofprofile data are empty. The process then proceeds to step 2028, wherethe system determines if the components of the top-level profile containprofiles or links to profiles. If these components do not containprofiles or links to profiles, the process proceeds directly to step2040 and ends. If the components contain profiles or links to profiles,the process proceeds to step 2030. At step 2030, if the system is notconfigured to automatically load profiles, the process proceeds directlyto step 2040 and ends, otherwise the process proceeds to step 2032. Atstep 2032, the system reads the profiles as specified by the top-levelprofile components, and loads them into the appropriate storagelocations for the newly defined profile set. The process then proceedsto step 2034. At step 2034, if a default profile is not defined, theprocess proceeds directly to step 2040 and ends, otherwise the processproceeds to step 2036. At step 2036, if the system is not configured touse the default profile, the process proceeds directly to step 2040,otherwise the process proceeds to step 2038. At step 2038, the defaultprofile (which would be stored in location 0 in this example) is appliedto the content, and the process proceeds to step 2040 and ends. In thisexample, if the user specifies top-level components that containprofiles, and these profiles are loaded from the top-level profilecomponents into storage locations 0, 2, 3, and 4, and if the system isconfigured to use the default profile (stored in location 0), then theintermediate UI 2060 shows that the current set of profile data is thesecond of a total of 2 (“2/2”), that in the current profile set, storagelocation 1 is empty and profiles have been defined for storage locations0, 2, 3, and 4, and that the default profile (stored in location 0) isnow current. The process then proceeds to step 2040 and ends.

FIG. 21 shows the embodiment of a process 2100 to use the invention viathe intermediate user interface (UI) of FIG. 20B to recall profiles andsets of profiles such as those described in Process 2000 above. Thisexample process is simplified by assuming that “use default profile” isturned on, i.e., if a default profile exists then it will beautomatically recalled/applied when its corresponding set of profiledata is activated. This simplification is intended to show how themultiple sets of profile data can be used in a working environment. Thistype of process could be used in many situations, including, forexample, a CAD environment. In this example environment, Process 2100assumes that 3 sets of profile data have been defined (as shown by the“3” in the position indicator “1/3”) of intermediate UI 2170. Each setof profile data may also have its own top-level profile information,which in the case of a CAD environment might contain the list of objectsdisplayed on the screen. For example, the top-level profile associatedwith the set of profile data in position 1 might contain a list “AA” ofobjects. Similarly, the top-level profiles associated with the sets ofprofile data in positions 2 and 3 might respectively contain lists ofobjects “BB” and “CC.” In this simple example, the profiles which makeup each set in the list may be configured to store only viewpoint dataand zoom scale, i.e., applying a profile changes the angle and zoomscale at which the on-screen objects are viewed. This UI and associatedsettings might be used to allow a user to easily build a presentationusing the actual CAD data where the user may easily move between definedsets of objects (the sets of profile data with their top-levelprofiles), with each set having its own pre-defined sets of viewpointsand zoom scales (the profiles stored in each set of profile data).

The process of FIG. 21 begins with intermediate UI 2170 showing that 3sets of profile data are defined, and that the set of profile datastored in position 1 is active. UI 2170 also indicates that the currentset of profile data has profiles stored in locations 0, 1, and 2, andthat the profile stored in location 1 is current. In other words, thecurrent set of profile data (set 1) and its top-level profile willdisplay the “AA” list of objects on the screen, and the viewpoint andzoom scale (the “view”) is as defined by the profile information storedin location 1. The process begins at step 2102, where the user requeststhe system to move to the next set of profile data by clicking on the“Next” button 2078. The process then proceeds to step 2104, where thesystem loads the set of profile data from position 2 into the UI. Theprocess then proceeds to step 2106, where the system recalls/applies thetop-level profile for this set of profile data i.e. changes thedisplayed objects to the “BB” list of objects. The process then proceedsto step 2108, where the system recalls/applies the default profile(stored in position 0), which changes the viewpoint and zoom scale tomatch the stored data. At this point, UI 2172 shows that the set ofprofile data in position 2 is active, has profiles stored in locations0, 1, 3, and 4, and that the profile stored in location 0 is current.The process then proceeds to step 2110, where the user again requeststhe system to move to the next set of profile data by clicking the“Next” button 2078. The process proceeds as above to steps 2112 and2114, where the system loads the set of profile data from position 3 andapplies the top-level profile (setting the displayed objects to the “CC”list of objects). However, since there is no default profile in the setof profile data stored in position 3, no default profile is applied i.e.the view may not change unless affected by other settings. At thispoint, UI 2174 shows that the set of profile data in position 3 isactive, has profiles stored in locations 1, 2, and 4, and that none ofthe stored profiles is current.

The process of FIG. 21 then proceeds to step 2116, where the userrequests the system to move to the previous set of profile data byclicking the “Previous” button 2074. The process then proceeds to steps2118, 2120, and 2122 just as above in steps 2104, 2106 and 2108, atwhich point UI 2176 is identical to UI 2172 since none of the profileinformation changed for the set of profile data stored in position 2.The process then proceeds to step 2124, where the user requests thesystem to recall the profile stored in location 3 by clicking on the “3”button 2068. The process then proceeds to step 2126, where the systemrecalls/applies the profile data stored in location 3, which sets theviewpoint and zoom scale to the values stored in the profile in location3. UI 2178 then shows that the set of profile data in position 2 isactive, has profiles stored in locations 0, 1, 3, and 4, and that theprofile stored in location 3 is current. The process then proceeds tostep 2128, where the user again requests the system to move to theprevious set of profile data by clicking the “Previous” button 2074. Theprocess then proceeds to steps 2130, 2132, and 2134, where the set ofprofile data in location 1 is loaded into the UI, its top-level profileis activated (displaying object list “AA”), and its default profile isrecalled/applied. UI 2180 then shows that the set of profile data inposition 1 is active, has profiles stored in locations 0, 1, and 2, andthat the default profile (stored in location 0) is current. This UI 2180is very similar to UI 2170, except that in UI 2180 the profile stored inlocation 0 is current due to the “Use default profile” setting. Theprocess then proceeds to step 2136, where the user again requests thesystem to move to the next set of profile data by clicking the “Next”button 2078. The process then proceeds to steps 2138, 2140, and 2142,just as above in steps 2118, 2120, and 2122, at which point UI 2182 isidentical to UI 2176 since no changes were made to the profileinformation. UI 2182 is also very similar to UI 2178 (the previous UIfor position 2, when the profile stored in location 3 was current), butthe current profile in UI 2182 is the default profile due to the “Usedefault profile” setting. The process the proceeds to step 2144 andends.

FIG. 22 is a schematic diagram illustrating the systems 2200 forconnecting a client to access and store profile data. FIG. 22 showsseveral embodiments illustrating various connection possibilities.Client 2202, which could be any type of client such as a car, boat,other vehicle, desktop or mobile computer, PDA, mobile phone, etc, whichis otherwise referred to herein as a client processing unit, configuredfor using profiles, may be connected to one or more sources of profiles.These connections may be (but are not required to be) simultaneous.Further, these sources of profiles may include any type of devicecapable of data storage, such as computers, USB flash drives, removableor fixed hard disk drives, data files, databases, etc, as well as anysubsystem thereof, otherwise referred to herein as source processingunits.

For example, client 2202 could obtain and/or store profile informationover direct connections to its own internal profile storage 2204.Further, client 2202 could obtain and/or store profile information overa direct connection to a removable storage device such as USB FlashDrive 2206 and/or other removable devices (such as writable media,removable media, external hard disk drives, etc). Still further, client2202 could obtain and/or store profile information over a direct (wired,optical, etc) connection to a network 2208. This network 2208 maycomprise any type or combination of types of networks, including LAN,WAN, Wireless LAN, Virtual Private Networks, the Internet, etc, and mayfurther comprise any type or combination of types of connections and/ornetwork interfaces such as modem, Ethernet, etc, as well as any type orcombination of types of wired or wireless connections 2212 such asWireless LAN, RF link, etc. This network may further utilize anyprotocol or combination of protocols for transferring information to andfrom one or more profile repository or repositories such as profileservers 2210 and 2214. Network 2208 may also utilize encryption, datacompression, and/or error correction to secure and enhancecommunications between the client and the profile repository orrepositories. The repositories may include any type of data storage,including simple files, databases, documents, files or objects withembedded profile information, etc, and this data may be stored using anydesired method and using any desired media or storage device ortechnology that are currently known to those skilled in the art.

Further, client 2202 can obtain and/or store profile information to orfrom one or more profile sources using a wireless link to satellite2216, which relays the information to and from satellite transceiver2218. In turn, satellite transceiver 2218, which can be any devicecapable of communicating directly with a satellite, such as a broadcasttower, a personal or commercial satellite dish, a handheld satellitereceiver/transmitter, etc, relays the information to and from one ormore profile repositories such as profile servers 2220 and 2222. Thesecommunications from satellite transceiver 2218 to the profilerepositories may be accomplished using any desired type or combinationof types of communications links, including direct (wired, optical, etc)and/or wireless communications links. The communications along theentire path from the client 2202 to a profile repository may beaccomplished using any protocol or combination of protocols fortransferring information, and may utilize encryption, data compressionand/or error correction to secure and enhance communications between theclient and repository or repositories. The repositories of profileinformation may include any type of data storage, including simplefiles, databases, documents, files or objects with embedded profileinformation, etc, and this data may be stored using any desired methodand using any desired media or storage device or technology.

Client 2202 can also obtain and/or store profile information in one ormore profile sources using one or more public communication links 2224,such as a cellular or other wireless links, that are connected to one ormore profile repositories, such as profile servers 2226 and 2228. Thesepublic communication links 2224 to the profile repositories may beaccomplished using any type or combination of types of communicationslinks, including direct (wired, optical, etc) and/or wirelesscommunications links. The communications along the entire path fromclient to profile repository may be accomplished using any protocol orcombination of protocols for transferring information, and may utilizeencryption, data compression and/or error correction to secure andenhance communications between the client and repository orrepositories. The repositories may include any type of data storage,including simple files, databases, documents, files or objects withembedded profile information, etc, and this data may be stored using anydesired method and using any desired media or storage device ortechnology.

Further, client 2202 can store and/or obtain profile information to andfrom one or more profile sources using a public wireless “HotSpot” suchas public hotspot 2230. This hotspot could be a public Internet café, orsome other publicly-accessible network connection. In this example,client 2202 obtains and/or stores profile information over the wirelesslink at the public hotspot 2230, which is connected to a network 2232.Network 2232 may be any network or combination of networks includingLAN, WAN, Wireless LAN, Virtual Private Networks, the Internet, etc, andmay utilize any type or combination of types of communications links,including direct (wired, optical, etc) and/or wireless communicationslinks. Network 2232 may further use any protocol or combination ofprotocols for transferring information, and may also utilize encryption,data compression and/or error correction to secure and enhancecommunications between the client and repository or repositories. Therepositories may include any type of data storage, including simplefiles, databases, documents, files or objects with embedded profileinformation, etc, and this data may be stored using any desired methodand using any desired media or storage device or technology. Network2232 may be connected to one or more profile repositories, such asprofile servers 2234, 2236, and 2240. As described above, theseconnections may utilize wired and/or wireless connections, includingthose such as wireless link 2238.

Client 2202 may also store and/or obtain profile information to and fromone or more profile sources such as profile servers 2244 and 2246 usinga private wireless network 2242 connected to a transceiver 2244. Thisnetwork may utilize any type of wireless communication, includingmicrowave, Local Multipoint Distribution Services (LMDS), Multipoint toMultipoint Distribution Services (MMDS), commercial or residentialwireless LAN, other RF communications, etc. Transceiver 2244 may beconnected to one or more profile repositories, such as profile servers2246 and 2248. These connections may be accomplished using any desiredtype of communication including LAN, WAN, Wireless LAN, Virtual PrivateNetworks, the Internet, etc, and may utilize any type or combination oftypes of communications links, including direct (wired, optical, etc)and/or wireless communications links. Network 2242, as well as thecommunications links from transceiver 2244 to its profile repositories,may utilize any protocol or combination of protocols for transferringinformation, and may also utilize encryption, data compression and/orerror correction to secure and enhance communications between the clientand repository or repositories. The repositories may include any type ofdata storage, including simple files, databases, documents, files orobjects with embedded profile information, etc, and this data may bestored using any desired method and using any desired media or storagedevice or technology.

FIG. 23 illustrates one embodiment of a multi-source profile showing howa profile can incorporate data from other profiles. Profile 2302comprises six sections, each of which may contain data of a similarnature, although the data contained in each section need not be related.All of the data from section 2304 of profile 2302 is stored within theprofile 2302. Section 2306 contains data that is stored internally, andalso contains an additional link to profile data stored externally (i.e.external to profile 2302) in a different profile. This additional linkinformation may include a profile ID (i.e. a unique identifier that maybe assigned to a profile when said profile is defined and stored), filename, etc, and/or any additional information that may be used to specifythe location of the linked data and which portions, including whichsections and/or subsections, of said data should be included. Theexternal reference in Section 2306 specifies that some or all of thedata in a profile with a profile ID of “BB” should be included as if itwere natively included in section 2306. In a typical use model, theprofile IDs will be significantly more complex to ensure uniqueness.However, for the sake of simplicity, this example uses very simpleProfile IDs. When the profile data is read from section 2306 of profile2302, the reference to external data will cause the profile controllerto attempt to find the referenced profile. The referenced profile couldbe located locally and/or remotely, including being stored in one ormore profile repositories which may be accessed using a wide variety ofmethods, such as those shown in FIG. 22. In this case, profile ID “BB”references profile 2316. Therefore, the profile controller reads thedata from section 2318 of profile 2316, and interprets section 2318 asthough this data had been internally stored in section 2306 of profile2302.

All of the data for section 2308 of profile 2302 is stored internallywithin profile 2302. Section 2310 of profile 2302 does not have anyinternal data, but does have an additional link to external profile datastored in a profile with an ID of “FF.” Thus, when profile data is readfrom section 2310 of profile 2302, the reference to external profiledata causes the profile controller to attempt to locate the referencedprofile. As above, the referenced profile can be located locally and/orremotely, including being stored in one or more profile repositorieswhich may be accessed using a wide variety of methods, such as thoseshown in FIG. 22. In this case, profile ID “FF” references profile 2320.As such, the profile controller reads the data from section 2322 ofprofile 2320, and interprets section 2322 as though this data had beeninternally stored in Profile 2302.

Section 2312 of profile 2302 has data located in a variety of locations,including its own internal storage. When the profile controller readsthe data for section 2312, the reference to a profile with an ID of “JJ”causes the controller to search for the referenced profile. Again, theprofile could be located locally and/or remotely, including being storedin one or more profile repositories which may be accessed using a widevariety of methods, such as those shown in FIG. 22. In this case,profile ID “JJ” references profile 2324, which is read by the profilecontroller to obtain the data in section 2326. The profile data storedin section 2326 has both internal data and a reference to external datastored in a profile with an ID of “ZZ.” In this instance, no section isspecified, which may indicate that the entire contents of the profilewith an ID of “ZZ” may be included. Thus, when the profile controllerreads the data from section 2326, the controller will attempt to locatea profile with an ID of “ZZ” and read the entire contents of thatprofile. Again, the profile could be located locally and/or remotely,including being stored in one or more profile repositories which may beaccessed using a wide variety of methods, such as those shown in FIG.22. In this case, profile ID “ZZ” references profile 2328. Hence, theprofile controller reads the data from sections 2330, 2332 and 2334 ofprofile 2328, interprets the data as though this data had beeninternally stored in section 2326 of profile 2324, and the resultingcombined internal and referenced data from section 2326 is theninterpreted by the profile controller as though the data had all beeninternally stored in section 2312.

Section 2312 of profile 2302 also contains a reference to a profile withan ID of “LL.” As above, the reference to external data causes theprofile controller to attempt to locate the referenced profile, whichcould be located locally and/or remotely, including being stored in oneor more profile repositories which may be accessed using a wide varietyof methods, such as those shown in FIG. 22. In this case, profile ID“LL” references profile 2336. Hence, the profile controller reads thedata from section 2338 of profile 2336, and interprets it as though thisdata had been internally stored in Profile 2302.

Section 2312 of profile 2302 also contains a reference to a profile withan ID of “MM.” As above, the reference to external data causes theprofile controller to attempt to locate the referenced profile, whichcould be located locally and/or remotely, including being stored in oneor more profile repositories which may be accessed using a wide varietyof methods, such as those shown in FIG. 22. In this case, profile ID“MM” references profile 2340. As such, the profile controller reads thedata from section 2342 of profile 2340, and interprets the data asthough this data had been internally stored in profile 2302.

Section 2314 of profile 2302 also has components of the profile data,and all of these components are stored internally within profile 2032.

The profile controller's ability to access the remote profile dataallows great flexibility and configurability to the top-level profile,e.g., profile 2302, as the resulting data associated with profile 2302appears to have all been internally stored. If any of the referencedprofile information is changed or updated, profile 2302 can benefit fromthese changes as well, depending on configuration options. For instance,the user may be presented with the changes, and may also be informedwhat effect those changes could have, including a “preview” of theeffects, and may then have the option whether accept or reject thechanges; if all or some of the changes are rejected, those portions ofthe profile data that the user does not wish to overwrite with the newprofile information may be kept intact and moved to internal storage,optionally replacing and/or removing the link to the external datasource.

The foregoing description of the invention has been presented forpurposes of illustration and description. It is not intended to beexhaustive or to limit the invention to the precise form disclosed, andother modifications and variations may be possible in light of the aboveteachings. The embodiment was chosen and described in order to bestexplain the principles of the invention and its practical application tothereby enable others skilled in the art to best utilize the inventionin various embodiments and various modifications as are suited to theparticular use contemplated. It is intended that the appended claims beconstrued to include other alternative embodiments of the inventionexcept insofar as limited by the prior art.

What is claimed is:
 1. A method of retrieving a profile for a vehicle,said profile having a plurality of attributes for modifying thepresentation of content, said attributes comprising settings forspecific content presentation characteristics, said content presentationcharacteristics comprising user-definable settings, said processcomprising: selecting said profile to be retrieved and applied to saiduser-definable settings at the direction of a user at run time to changesaid content presentation characteristics; retrieving said profile froma profile repository at run time: loading said profile from said profilerepository at run time; applying said profile to said user-definablesettings at the direction of a user at run time to modify saiduser-definable settings, said process of applying said profile furthercomprising: setting a current attribute pointer to a current attributein said profile; applying said current attribute to said user-definablesettings at run time to modify said user-definable settings tocorrespond to said current attribute if said current attribute has acorresponding attribute present in said user-definable settings, andwhen current attribute is valid for said settings; incrementing saidcurrent attribute pointer so that each attribute of said plurality ofattributes in said profile is applied to said user-definable settings atrun time which modifies said user-definable settings to correspond tosaid attribute whenever said attribute has a corresponding attributepresent in said user-definable settings, and when said attribute isvalid for said settings.
 2. The method of claim 1 wherein the process ofretrieving said profile from a profile repository comprises: selecting aspecific subset of attributes from said plurality of attributescomprising said profile to be applied.
 3. The method of claim 1 whereinsaid user-definable settings comprise: a user-definable contentpresentation characteristic selected from the group consisting of:climate control, seat positions and settings, audio system presets andsettings, engine performance settings, navigation system settings,sun/moonroof settings, display brightness settings and mirror settings.4. The method of claim 1 wherein the process of selecting said profilefurther comprises: providing identifying information by a user to thevehicle profile controller; determining whether said vehicle isconfigured to use profiles; determining whether said vehicle profilecontroller can obtain profile information related to said identifyinginformation when said vehicle is configured to use profiles; determiningwhether said profile information identifies a default profile when saidvehicle is configured to use profiles and when said vehicle profilecontroller is able to obtain profile information related to saididentifying information; selecting said default profile as the profileto be retrieved and applied to said user-definable settings when saidvehicle is configured to use profiles, when said vehicle profilecontroller is able to obtain profile information related to saididentifying information, and when said profile information identifiessaid default profile; loading and applying said default profileautomatically.
 5. The method of claim 3 wherein the process of the userproviding identifying information to the vehicle profile controllerfurther comprises: providing the identifying information via a removablestorage device.
 6. The method of claim 3 further comprising: providingidentifying information of said user to a vehicle profile controller inthe form of biometric identification of said user.
 7. The method ofclaim 1 wherein the process of retrieving said profile from a profilerepository further comprises: retrieving said profile from a profilerepository, said profile repository being a storage location which islocated within said vehicle.
 8. The method of claim 1 wherein theprocess of retrieving said profile from a profile repository furthercomprises: retrieving said profile from a profile repository, saidprofile repository being a storage location which is located on aremovable storage device.
 9. The method of claim 1 wherein the processof retrieving said profile from a profile repository further comprises:retrieving said profile from an external profile repository, saidexternal profile repository being a storage location that is separatefrom, and not located within, said vehicle.
 10. The method of claim 9wherein the process of retrieving said profile from an external profilerepository further comprises: retrieving said profile from an externalprofile repository, said external profile repository being a storagelocation that is separate from, and not located within, said vehicle,where said external profile repository is accessed through a network.11. A method of retrieving and applying a profile, said profile having aplurality of attributes for modifying the presentation of content, saidattributes comprising settings for specific content presentationcharacteristics for a Computer-Aided Design (CAD) application, at thedirection of a user at run time comprising: defining content to whichsaid profile is to be applied at the direction of a user at run time;selecting said profile to be retrieved and applied to said content, saidprofile comprising said settings for said specific content presentationcharacteristics; retrieving said profile from a profile repository atrun time: loading said profile from said profile repository at run time;applying said profile to said content at the direction of a user at runtime to modify presentation of said content, rather than presenting asubset of said selected content that is not modified by said specificcontent presentation characteristics, said process of applying saidprofile further comprising: setting a current attribute pointer to acurrent attribute in said profile; applying said current attribute tosaid user-definable settings at run time to modify presentation of saidcontent to correspond to said current attribute when said currentattribute has a corresponding attribute present in said user-definablesettings, and when current attribute is valid for said settings;incrementing said current attribute pointer so that each attribute ofsaid plurality of attributes in said profile is applied to saiduser-definable settings at run time which modifies presentation of saidcontent to correspond to said attribute when said attribute has acorresponding attribute present in said user-definable settings, andwhen said attribute is valid for said user-definable settings.
 12. Themethod of claim 11 wherein the process of selecting said profile to beretrieved and applied to said content further comprises: determiningwhether said CAD application is configured to use profiles; determiningwhether said defined content contains profile information when said CADapplication is configured to use profiles; determining, when saiddefined content contains profile information and said CAD application isconfigured to use profiles, whether said profile information identifiesa default profile; selecting said default profile as a profile to beretrieved and applied to said defined content when said CAD applicationis configured to use profiles, said defined content containing profileinformation, and said profile information identifying said defaultprofile; loading and applying said default profile automatically. 13.The method of claim 11 wherein the process of retrieving said profilefrom a profile repository comprises: selecting a specific subset ofattributes from said plurality of attributes comprising said profile tobe applied.